欢迎来到天天文库
浏览记录
ID:43667208
大小:21.59 KB
页数:5页
时间:2019-10-12
《单链表完整C语言纯代码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、带头结点的单链表单链表l带头结点#include#include/*带头结点的单链表的操作在该链表中,数据元素是int,我们让头结点的数据域存储链表的实际长度*//*链表节点的类型定义*/structnode{intdata;structnode*next;};/*链表的初始化函数在该函数中要分配头结点存储空间让头指针指向头结点,因此要修改头指针的值,所以传递头指针的地址进来*/voidinit(structnode**h){structnode*s;s=(s
2、tructnode*)malloc(sizeof(structnode));if(s==NULL)return;/*头结点的数据域存储链表的长度*/s->data=0;s->next=NULL;/*让头指针指向头结点*/*h=s;}/*创建链表,仍然按照逆序创建,从后往前输入元素的值,然后把新结点插入到表头*/voidcreateLink(structnode*h){5带头结点的单链表structnode*s;intn;while(1){scanf("%d",&n);/*根据实际情况判断链表的元素
3、输入结束还有一种情况就是找不到合适的作为结束标记的值先让用户输入元素个数,然后固定字数循环*/if(n==-1)break;/*创建新结点*/s=(structnode*)malloc(sizeof(structnode));s->data=n;s->next=h->next;/*新结点放入链表的表头让头结点的NEXT指向新结点*/h->next=s;(h->data)++;}}/*遍历整个链表*/voidbianliLink(structnode*h){intk;structnode*p;/*P
4、指向第一个结点*/p=h->next;/*如果定义了链表长度变量,可以使用变量计数,表示处理到链表的最后一个元素如果不定义链表长度变量,就用指针是否指向NULL,判断是否处理到最后一个元素了5带头结点的单链表*//*1.链表长度变量计数*/k=0;while(kdata){/*对元素进行处理这里可以根据需求变更*/printf("%d",p->data);/*准备处理下一个节点*/p=p->next;k++;}/*2.用指针判断是否处理到链表的最后一个元素了*/printf("");p
5、=h->next;while(p!=NULL){/*处理当前节点*/printf("%d",p->data);/*准备处理下一个节点*/p=p->next;}printf("");}/*intnum:要插入的结点元素的值index:插入位置:index从1开始编号,要在Index指定的位置插入数据*/voidinsertLink(structnode*h,intnum,intindex){structnode*p,*s;intk=1;/*插入位置无效,链表长度现在是10,在12(包含12)之后
6、的位置插入元素,认为地址无效*/if(index<=0
7、
8、index>(h->data+1))return;s=(structnode*)malloc(sizeof(structnode));if(s==NULL)return;s->data=num;/*5带头结点的单链表让指针p指向头结点*/p=h;/*让指针p移动到待插入位置的前驱结点*/while(knext;k++;}s->next=p->next;p->next=s;h->data++;}/*index:删除位
9、置:index从1开始编号,要删除index所指的位置的元素*/voiddeleteLink(structnode*h,intindex){structnode*p,*s;intk=1;if(index<=0
10、
11、index>h->data)return;/*让指针p指向头结点*/p=h;/*让指针p移动到待删除节点的前驱*/while(knext;k++;}p->next=p->next->next;/*链表删除有可能让你返回删除的节点的值*/h->data--;}/*该
12、方法返回链表的Index位置的元素链表中的数据元素的类型与函数返回值的类型要一致*/5带头结点的单链表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);insertLi
此文档下载收益归作者所有