单链表完整C语言纯代码.docx

单链表完整C语言纯代码.docx

ID:59343155

大小:11.26 KB

页数:5页

时间:2020-10-31

单链表完整C语言纯代码.docx_第1页
单链表完整C语言纯代码.docx_第2页
单链表完整C语言纯代码.docx_第3页
单链表完整C语言纯代码.docx_第4页
单链表完整C语言纯代码.docx_第5页
资源描述:

《单链表完整C语言纯代码.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、单链表l带头结点#include#include/*带头结点的单链表的操作在该链表中,数据元素是int,我们让头结点的数据域存储链表的实际长度*//*链表节点的类型定义*/structnode{intdata;structnode*next;};/*链表的初始化函数在该函数中要分配头结点存储空间让头指针指向头结点,因此要修改头指针的值,所以传递头指针的地址进来*/voidinit(structnode**h){structnode*s;s=(structnode*)malloc(sizeof(structnode));if(s=

2、=NULL)return;/*头结点的数据域存储链表的长度*/s->data=0;s->next=NULL;/*让头指针指向头结点*/*h=s;}/*创建链表,仍然按照逆序创建,从后往前输入元素的值,然后把新结点插入到表头*/voidcreateLink(structnode*h){structnode*s;intn;while(1){scanf("%d",&n);/*根据实际情况判断链表的元素输入结束还有一种情况就是找不到合适的作为结束标记的值先让用户输入元素个数,然后固定字数循环*/if(n==-1)break;/*创建新结点*/s=(structnode*)m

3、alloc(sizeof(structnode));s->data=n;s->next=h->next;/*新结点放入链表的表头让头结点的NEXT指向新结点*/h->next=s;(h->data)++;}}/*遍历整个链表*/voidbianliLink(structnode*h){intk;structnode*p;/*P指向第一个结点*/p=h->next;/*如果定义了链表长度变量,可以使用变量计数,表示处理到链表的最后一个元素如果不定义链表长度变量,就用指针是否指向NULL,判断是否处理到最后一个元素了*//*1.链表长度变量计数*/k=0;while(k

4、data){/*对元素进行处理这里可以根据需求变更*/printf("%d",p->data);/*准备处理下一个节点*/p=p->next;k++;}/*2.用指针判断是否处理到链表的最后一个元素了*/printf("");p=h->next;while(p!=NULL){/*处理当前节点*/printf("%d",p->data);/*准备处理下一个节点*/p=p->next;}printf("");}/*intnum:要插入的结点元素的值index:插入位置:index从1开始编号,要在Index指定的位置插入数据*/voidinsertLin

5、k(structnode*h,intnum,intindex){structnode*p,*s;intk=1;/*插入位置无效,链表长度现在是10,在12(包含12)之后的位置插入元素,认为地址无效*/if(index<=0

6、

7、index>(h->data+1))return;s=(structnode*)malloc(sizeof(structnode));if(s==NULL)return;s->data=num;/*让指针p指向头结点*/p=h;/*让指针p移动到待插入位置的前驱结点*/while(knext;k++;}s->next

8、=p->next;p->next=s;h->data++;}/*index:删除位置:index从1开始编号,要删除index所指的位置的元素*/voiddeleteLink(structnode*h,intindex){structnode*p,*s;intk=1;if(index<=0

9、

10、index>h->data)return;/*让指针p指向头结点*/p=h;/*让指针p移动到待删除节点的前驱*/while(knext;k++;}p->next=p->next->next;/*链表删除有可能让你返回删除的节点的值*/h->data-

11、-;}/*该方法返回链表的Index位置的元素链表中的数据元素的类型与函数返回值的类型要一致*/intgetLink(structnode*h,intindex){structnode*p;intk=1;p=h->next;while(k++next;}returnp->data;}main(){structnode*header;init(&header);createLink(header);bianliLink(header);insertLink(header,10,1);bianliLink(header);insertLin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。