C语言里面的链表是什么

C语言里面的链表是什么,第1张

C语言里面的链表是一种数据结构

是一种线形的存储结构

链表和数组一样,也是将一组同类型的数据组织在一起的一种数据结构

不同的是

数组采用的是顺序存储,依靠数组的首地址和元素的相对地址(下标)来实现访问。

优点是访问方便快捷,而缺点是数组是静态的,不利于实现元素的动态增减。

而链表采用的是离散存储,依靠节点间的指向下一个节点的指针来实现访问。

其优缺点和数组相反

#include\x0d\x0a#include\x0d\x0a\x0d\x0astruct chain\x0d\x0a{\x0d\x0a int value\x0d\x0a struct chain *next\x0d\x0a}\x0d\x0a\x0d\x0astruct chain *create()\x0d\x0a{\x0d\x0a struct chain *head,*tail,*p\x0d\x0a int x\x0d\x0a head = tail = NULL\x0d\x0a while(scanf("%d",&x)==1)\x0d\x0a {\x0d\x0a p=(struct chain*)malloc(sizeof(struct chain))\x0d\x0a p->value=x\x0d\x0a p->next=NULL\x0d\x0a if(head==NULL)\x0d\x0a head = tail = p\x0d\x0a else\x0d\x0a tail=tail->next=p\x0d\x0a }\x0d\x0a return head\x0d\x0a}\x0d\x0a\x0d\x0astruct chain *inlink(struct chain *head,int a,int b)//int a代表要插入的节点,int b代表创建节点的数据域\x0d\x0a{\x0d\x0a struct chain *p,*q,*s\x0d\x0a s = (struct chain *)malloc(sizeof(struct chain))\x0d\x0a s->value=b\x0d\x0a if(head==NULL)\x0d\x0a {\x0d\x0a head = s\x0d\x0a head->next = NULL\x0d\x0a }\x0d\x0a if(head->value == a)\x0d\x0a {\x0d\x0a s->next=head\x0d\x0a head = s\x0d\x0a }\x0d\x0a else\x0d\x0a {\x0d\x0a p=head\x0d\x0a while((p->value!=a)&&(p->next!=NULL))\x0d\x0a {\x0d\x0a q=p\x0d\x0a p=p->next\x0d\x0a }\x0d\x0a if(p->value == a)\x0d\x0a {\x0d\x0a q->next = s\x0d\x0a s->next = p\x0d\x0a }\x0d\x0a else\x0d\x0a {\x0d\x0a p->next=s\x0d\x0a s->next=NULL\x0d\x0a }\x0d\x0a }\x0d\x0a return (head)\x0d\x0a}\x0d\x0a\x0d\x0astruct chain *dellink(struct chain *head,int a) //int a代表要删除的节点\x0d\x0a{\x0d\x0a struct chain *q,*p\x0d\x0a if(head == NULL)\x0d\x0a printf("找不到节点!\n")\x0d\x0a else if(head->value == a)\x0d\x0a {\x0d\x0a p = head\x0d\x0a head = head->next\x0d\x0a }\x0d\x0a else\x0d\x0a {\x0d\x0a p=head\x0d\x0a while((p->value!=a)&&(p->next!=NULL))\x0d\x0a {\x0d\x0a q=p\x0d\x0a p=p->next\x0d\x0a }\x0d\x0a if(p->value != a)\x0d\x0a printf("链表不存在此节点!\n")\x0d\x0a else\x0d\x0a {\x0d\x0a q->next = p->next\x0d\x0a free(p)\x0d\x0a }\x0d\x0a }\x0d\x0a return (head)\x0d\x0a}\x0d\x0a\x0d\x0avoid main()\x0d\x0a{\x0d\x0a struct chain *p,*q\x0d\x0a q=create() //链表的创建;\x0d\x0a //q=inlink(create(),3,1) //链表的插入;\x0d\x0a //q=dellink(create(),2) //链表的删除;\x0d\x0a while(q){ //输出链表;\x0d\x0a printf("%d\n",q->value)\x0d\x0a p=q->next\x0d\x0a free(q)\x0d\x0a q=p\x0d\x0a }\x0d\x0a}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11009389.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-12
下一篇2023-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存