单链表程序注解9999

上传人:壹****1 文档编号:494946162 上传时间:2023-04-18 格式:DOCX 页数:5 大小:16.70KB
返回 下载 相关 举报
单链表程序注解9999_第1页
第1页 / 共5页
单链表程序注解9999_第2页
第2页 / 共5页
单链表程序注解9999_第3页
第3页 / 共5页
单链表程序注解9999_第4页
第4页 / 共5页
单链表程序注解9999_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《单链表程序注解9999》由会员分享,可在线阅读,更多相关《单链表程序注解9999(5页珍藏版)》请在金锄头文库上搜索。

1、二、单链表的综合操作#define NULL 0宏定义用NULL代替0typedef struct linknode定义结构体名 节点类型int data;将数据成员定义为INT型struct linknode *next;定义数据结构名和指针变量名(指针域)node;node *creat(head)单链表,参数为head形参)node *head;声明指针head指向节点node *currnode,*newnode;声明指针 currnode 环绕 newnode 指向节点int x;定义整形变量head=(node*)malloc(sizeof(node);向系统申请分配链表节点的存储

2、空间首地址为headcurrnode=head;赋值给 currnodeheaddoscanf(%d,&x);输入变量 Xnewnode=(node*)malloc(sizeof(node);向系统申请动态的存储空间首地址为newnodenewnode-data=x;newnode指向第一个节点并赋予xcurrnode-next=newnode; currnode 指向第一个节点 并赋值为 newnodecurrnode=newnode;指针向后移到下一个节点while(x!=NULL);若X不为空时 循环为0时 导出循环head=head-next;头指针 向下个节点后移head由head指

3、向next赋给currnode-next=NULL;最后一点的指针域为空return head;返回 head;node *head;声明头节点headvoid print()转出函数node *currnode;声明currnode=head;当前指针为 headprintf(链表如下.linklist:);输出 linllist 单链表while(currnode-data!=NULL)循环并同时判断指针currnode指向的data值为是否为空printf(%d-,currnode-data);若不为空则输出指针的指currnode=currnode-next;指针 currnode 向

4、下一节点后移;printf(NULLn);输出空换行printf(链表长度为linklist length%dn,length();输出单链表的长度length返回至;void delete()删除函数int x;定义整形变量Xnode *delnode,*currnode;声明 delnode 和 currnode 指针printf(输入要删除数据input delete data:);输出input delete date (输入想删除数据)scanf(%d,&x);输入整形 Xif(head-data=NULL) printf(此链表为空无法删除this linklist empty!

5、n);判断若头指针为空输出 LINKLISTnullif(head-data=x)判断如果头指针指向的data与X值相同delnode=head;指针 delnode指向头指针head=head-next;头指针后移free(delnode);释放指针 delnodeif(head=NULL) printf(此链表为空this linklist enpty!);若 head 为 null 输出 linklist nullelsecurrnode=head;否则指针 currude 指向 headdelnode=currnode-next;指针 delnode 指向指针 currnode 并向下

6、一节点后移 while(delnode-data!=x&delnode!=NULL)判断 delnode 指向 data 不等于 X 且不为空 currnode=currnode-next;则指针 currnode 向下一节点移动delnode=currnode-next; 指针 delnode 指向 currnode 并向后移;if(delnode=NULL)如果指针 delnide 为空printf(无此数据no this data ! n);则直接输出 a data is nullelse释放delnode所指的变量空间currnode-next=delnode-next;否则指针 cu

7、rrnode next 指向指针 delenode 到 next free(delnode);int length()node *currnode;int i=0;currnode=head;while(currnode-data!=NULL)currnode=currnode-next;i+;return i;void find()node *currnode;定义长度声明指针currnode定义整形i=0指针currnode指向head判断指针currnode若不为空指针currnode后移 i+返回i值申明指针currnode定义整形变量count=1和x指针currnode指向head

8、输出 input search data输入整形x循环判断指针不为空且不等于x值则指针currnode后移count+如果currnode指向的data不为空输出指针currnode所指向的值输出,换行int count=1,x;currnode=head;printf(input search data:);scanf(%d,&x);while(currnode-data!=NULL&currnode-data!=x)currnode=currnode-next;count+;if(currnode-data!=NULL)printf(n%dNo.,currnode-data);printf

9、(%ddata。n,count);else否则输出 this data is nullprintf(nthis data is null!n);void insert()定义整形变量x,w,i申明指针 insertnode, afternode, currnode;输出 input insert data输入x输出 insert n node after, 换彳亍输入w向系统中申请动态存储空间将指针insertnode指向的data值赋为x若w=0指针 insertnodef node 指向 head指针 head 指向指针insertnodeint x,w,i;node *insertnod

10、e, *afternode,*currnode;printf(input insert data:);scanf(%d,&x);printf(insert n node aftern=);scanf(%d,&w);insertnode=(node*)malloc(sizeof(node);insertnode-data=x;if(w=0)insertnode-next=head;head=insertnode;else若w超过总长度,输出out widerif(wlength() printf(oucurrnodet wider!n);else指针 currnode指向指针 headi 为 1

11、,若 inext 指向指针 insertnode指针 insertnode-next 指向指针 afternodecurrnode=head;afternode=currnode-next;for(i=1;inext;currnode=currnode-next;currnode-next=insertnode;insertnode-next=afternode;void sort(node * *head)node *p,*q,*r,*s,*h1;h1=p=(node *)malloc(sizeof(node);p-next=*head;while(p-next!=NULL)q=p-next

12、;r=p;while(q-next-next!=NULL)if (q-next-datanext-data)r=q;q=q-next;if(r!=p)s=r-next;r-next=s-next;s-next=p-next;p-next=s;p=p-next;*head=h1-next;free(h1);void operation()printf(delete data:.1n);printf(serch data :.2n);printf(insert data:.3n);printf(sort:4n);printf(end:5n);printf(?:);main()int choic;p

13、rintf(ninput data 0 end:n);head=creat();print();operation();声明指针p,q,r,s,h1向系统申请动态的存储空间头指针head指向pf next循环判断pf next不为空时指针q指向pf x指针r指向指针p循环判断pf nextf next不为空时若指针qf next指向的data值小于指针lnext所指的data值q向下一结点后移若r不等于p指针rf next指针rf next,指向指针sf next指针sf next,指向指针 pf next指针pf next,指向s指针p向下一结点后移指针head指向h1f next释放h1定义 operation函数删除数据按1寻找数据按2插入数据按3排序数据按4结束按5main函数定义int型变量choic输出显示” input data 0 end:”do运用switch语句实现选择功能scanf(%d,&choic);switch(choic)case 1: delete();print();operation();break;case 2: find();operation();break;case 3:insert();print();operation();bre

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号