电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

单链表完整C语言纯代码VIP免费

单链表完整C语言纯代码_第1页
1/5
单链表完整C语言纯代码_第2页
2/5
单链表完整C语言纯代码_第3页
3/5
带头结点的单链表单链表带头结点#include#include/*带头结点的单链表的操作在该链表中,数据元素是int,我们让头结点的数据域存储链表的实际长度*//*链表节点的类型定义*/structnode{intdata;structnode*next;};/*链表的初始化函数在该函数中要分配头结点存储空间让头指针指向头结点,因此要修改头指针的值,所以传递头指针的地址进来*/voidinit(structnode**h){structnode*s;s=(structnode*)malloc(sizeof(structnode));if(s==NULL)return;/*头结点的数据域存储链表的长度*/s->data=0;s->next=NULL;/*让头指针指向头结点*/*h=s;}/*创建链表,仍然按照逆序创建,从后往前输入元素的值,然后把新结点插入到表头*/voidcreateLink(structnode*h){1带头结点的单链表structnode*s;intn;while(1){scanf("%d",&n);/*根据实际情况判断链表的元素输入结束还有一种情况就是找不到合适的作为结束标记的值先让用户输入元素个数,然后固定字数循环*/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指向第一个结点*/p=h->next;/*如果定义了链表长度变量,可以使用变量计数,表示处理到链表的最后一个元素如果不定义链表长度变量,就用指针是否指向NULL,判断是否处理到最后一个元素了2带头结点的单链表*//*1.链表长度变量计数*/k=0;while(kdata){/*对元素进行处理这里可以根据需求变更*/printf("%d",p->data);/*准备处理下一个节点*/p=p->next;k++;}/*2.用指针判断是否处理到链表的最后一个元素了*/printf("\n");p=h->next;while(p!=NULL){/*处理当前节点*/printf("%d",p->data);/*准备处理下一个节点*/p=p->next;}printf("\n");}/*intnum:要插入的结点元素的值index:插入位置:index从1开始编号,要在Index指定的位置插入数据*/voidinsertLink(structnode*h,intnum,intindex){structnode*p,*s;intk=1;/*插入位置无效,链表长度现在是10,在12(包含12)之后的位置插入元素,认为地址无效*/if(index<=0||index>(h->data+1))return;s=(structnode*)malloc(sizeof(structnode));if(s==NULL)return;s->data=num;/*3带头结点的单链表让指针p指向头结点*/p=h;/*让指针p移动到待插入位置的前驱结点*/while(knext;k++;}s->next=p->next;p->next=s;h->data++;}/*index:删除位置:index从1开始编号,要删除index所指的位置的元素*/voiddeleteLink(structnode*h,intindex){structnode*p,*s;intk=1;if(index<=0||index>h->data)return;/*让指针p指向头结点*/p=h;/*让指针p移动到待删除节点的前驱*/while(knext;k++;}p->next=p->next->next;/*链表删除有可能让你返回删除的节点的值*/h->data--;}/*该方法返回链表的Index位置的元素链表中的数据元素的类型与函数返回值的类型要一致*/4带头结点的单链表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);insertLink(header,11,header->data+1);bianliLink(header);insertLink(header,13,4);bianliLink(header);deleteLink(header,1);bianliLink(header);deleteLink(header,header->data);bianliLink(header);deleteLink(header,3);bianliLink(header);printf("%d,%d,%d\n",getLink(header,0),getLink(header,header->data),getLink(header,3));}5

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

单链表完整C语言纯代码

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部