线性表的建立和删除
来源:互联网 发布:怎样在淘宝上联系卖家 编辑:程序博客网 时间:2024/05/20 16:14
//线性表注意:线性表操作过程中改主意list的变化,执行一个操作都要返回一个list,难点就是创建过程中r接受前一个节点的地址,删除过程难点先找到数据对应的节点,是p1->link=p2->link;
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node*link;
}Lnode,*LinkList;
LinkList Creat(int n)//创建线性表,我们主要是通过结构体指针来操作创建的,需要注意的是结构体指针本来就是对应一个地址,如p是他自己的地址。
{
LinkList list,r,p;
int i;
list = NULL;
r = NULL;
p = NULL;
for (i = 1; i<= n; i++)
{
p = (LinkList)malloc(sizeof(Lnode)); //申请一个空间给每一个节点(用节点指针),创建一个NODE节点还同时创建了一个结构体指针,造成了资源的浪费
p->data = i;
p->link=NULL;
if (list == NULL) //对于第一个节点赋予List指针
{
list = p;
}
else
{
r->link = p; //将前一个节点赋予r指针
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node*link;
}Lnode,*LinkList;
LinkList Creat(int n)//创建线性表,我们主要是通过结构体指针来操作创建的,需要注意的是结构体指针本来就是对应一个地址,如p是他自己的地址。
{
LinkList list,r,p;
int i;
list = NULL;
r = NULL;
p = NULL;
for (i = 1; i<= n; i++)
{
p = (LinkList)malloc(sizeof(Lnode)); //申请一个空间给每一个节点(用节点指针),创建一个NODE节点还同时创建了一个结构体指针,造成了资源的浪费
p->data = i;
p->link=NULL;
if (list == NULL) //对于第一个节点赋予List指针
{
list = p;
}
else
{
r->link = p; //将前一个节点赋予r指针
}
r = p;
}
return list; //返回List
}
LinkList delete(LinkList list,int i) //删除其中的某个元素,这里是通过对应数值删除,通过p和p->link及(p->link)->link
{
LinkList p1,p2;
p1=list;
while(i!=p1->data&&p1->link!=NULL)//不是我们所要找的数值时??
{
p2=p1;
p1=p1->link;//p1指向下一节点
}
if(i==p1->data)//当找到要删除的num时
{
if(p1==list)//要删除的数值为第一个数时
list=p1->link;
else p2->link=p1->link;//否则的话,将下一结点地址赋给前一结点(即跳过num,指向下一个数值)??
}
return(list);
r = p;
}
return list; //返回List
}
LinkList delete(LinkList list,int i) //删除其中的某个元素,这里是通过对应数值删除,通过p和p->link及(p->link)->link
{
LinkList p1,p2;
p1=list;
while(i!=p1->data&&p1->link!=NULL)//不是我们所要找的数值时??
{
p2=p1;
p1=p1->link;//p1指向下一节点
}
if(i==p1->data)//当找到要删除的num时
{
if(p1==list)//要删除的数值为第一个数时
list=p1->link;
else p2->link=p1->link;//否则的话,将下一结点地址赋给前一结点(即跳过num,指向下一个数值)??
}
return(list);
}
int main()
{
LinkList s,k,r;
int i,l;
for (s = Creat(10); s != NULL; s = s->link)
{
printf("%d", s->data);
}
printf("请输入您要删除的元素:");
scanf("%d",&i);
k=Creat(10);
r=delete(k,i);
for (; r!= NULL; r=r->link)
{
printf("%d", r->data);
}
return 0;
}
int main()
{
LinkList s,k,r;
int i,l;
for (s = Creat(10); s != NULL; s = s->link)
{
printf("%d", s->data);
}
printf("请输入您要删除的元素:");
scanf("%d",&i);
k=Creat(10);
r=delete(k,i);
for (; r!= NULL; r=r->link)
{
printf("%d", r->data);
}
return 0;
}
阅读全文
0 0
- 线性表的建立和删除
- 线性表建立、删除
- 线性表的建立,删除,查找
- 线性表建立、插入、删除、查找应用
- 编程实现顺序存储结构和链式存储结构线性表的建立、查找、插入、删除等基本操作
- 线性表的插入和删除
- 线性表的增加和删除
- 线性表的插入和删除
- 链表的建立、插入和删除
- 链表的建立、插入和删除
- 线性表的顺序建立
- 数据结构——线性表的建立和有序输出
- 线性表的操作(完成表的建立,插入,删除,排序,销毁,查找 )
- 数据结构(线性表的操作:建立表,插入元素,删除元素,取元素,置空)
- c语言实现线性表的建立,初始化,插入,删除,查找,遍历以及时间复杂度分析
- 用户的建立和删除
- 特殊的线性表-----栈---栈的插入和删除
- 数据结构:线性表删除操作的php和js实现
- Hie with the Pie POJ
- Python正则表达式
- Python进阶
- php-DOM部分基础知识总结与实例(V客学院知识分享)
- 9.28 考试总结
- 线性表的建立和删除
- .gitignore无效,不能过滤某些文件
- leetcode
- 图像合成--异质 案例
- js-使用js生成10*10个带标号的div
- 封装好的图片滑动框架(AndroidImageSlider)
- iOS 如何在cell上面毫无卡顿的同时加载大量高清图片
- storm学习(二)
- C++笔记——第一个MFC程序