有序单链表 数据结构

上传人:油条 文档编号:19121384 上传时间:2017-09-06 格式:PDF 页数:7 大小:321.38KB
返回 下载 相关 举报
有序单链表 数据结构_第1页
第1页 / 共7页
有序单链表 数据结构_第2页
第2页 / 共7页
有序单链表 数据结构_第3页
第3页 / 共7页
有序单链表 数据结构_第4页
第4页 / 共7页
有序单链表 数据结构_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《有序单链表 数据结构》由会员分享,可在线阅读,更多相关《有序单链表 数据结构(7页珍藏版)》请在金锄头文库上搜索。

1、#include #include #define OVERFLOW -2 #define OK 1 #define ERROR 0 typedef int datatype; typedef struct LNode datatype data; struct LNode *next; LNode,*Linklist; LNode *L; LNode *p,*q,*head; /*函数声明 */ void CreatList(Linklist &L); void print(Linklist &L); void caidan(); void listdelete(Linklist &L);

2、void insert(Linklist &L); Linklist &revelist(Linklist &L); void tuichu(Linklist &L); /*/ int m;/输入数据的个数 int n;/所选功能的序号 int i;/循环变量 /*创建一个带头节点的链表 */调试通过 void CreatList(Linklist &L) LNode *rear; printf(请输入链表中数据的个数 :); scanf(%d,&m); L=(Linklist)malloc(sizeof(LNode);/建立一个结点 L-next=NULL; printf(请按降序或升序输入

3、链表中的数据 :n); rear=L; for(i=m;i0;i-)/尾插法 p=(Linklist)malloc(sizeof(LNode); scanf(%d,&p-data); p-next=NULL; rear-next=p; rear=p; /*for(i=m;i0;-i)/头插法 p=(Linklist)malloc(sizeof(LNode); scanf(%d,&p-data); p-next=L-next; L-next=p; */ printf(数据输入成功 !); print(L); /*/ /*打印链表 */调试通过 void print(Linklist &L) pr

4、intf(n链表中的 %d 个数是 :n,m); printf(H); p=L-next; if(L!=NULL) do printf(-%d,p-data); p=p-next; while(p!=NULL); printf(n); /*/ /*显示菜单 */调试通过 void caidan() printf(n此程序可以实现以下功能 :n); printf(1.插入一个结点。 n); printf(2.将单链表就地逆置。 n); printf(3.删除大于 mink小于 maxk的元素。 n); printf(4.打印单链表。 n); printf(5.退出程序。 n); printf(您

5、可以选择 要实现的功能。 n); printf(请输入此功能的序号 :); scanf(%d,&n); if(n0&nmax) a=min; min=max; max=a; minp=L-next; maxp=L-next; p=L-next; while(minp!=NULL&minp-data!=min)/找到最小值的位置 minp=minp-next; while(maxp!=NULL&maxp-data!=max)/找到最大值的位置 maxp=maxp-next; /while(p!=NULL&*(p-next-data)datap-next-data)/降序排列 while(maxp

6、-data!=minp-data) p=maxp-next; maxp-next=p-next; free(p); else if(p-datanext-data)/升序排列 while(minp-next!=maxp) p=minp-next; minp-next=p-next; free(p); /* while(*(p-next-data)data)=min) q=p;/q=p-next; p=q-next;/p-next=q-next; q-next=p-next;/e=*q-data; free(p);/ free(q); p=q; m-; /p=p-next; else p=p-n

7、ext; */ printf(删除后的链表是 :n); print(L); /*/ /*按序插入 */调试通过 void insert(Linklist &L) datatype e; LNode *s; s=(Linklist)malloc(sizeof(LNode);/生成一个结点 printf(请输入要插入的数据 :n); scanf(%d,&e); p=L-next; s-data=e; if(p-datap-next-data)/降序排列 while(p-datae) q=p; p=p-next; else if(p-datanext-data)/升序排列 while(p-datan

8、ext; s-next=p; q-next=s; m+; /q=p; /* if(p-data)(p-next-data)/降序排列 while(*(p-data)e) q=p; p=p-next; *(s-data)=e;s-next=p;q-next=s; m+; return OK; else if(p-data)next-data)/升序排列 while(*(p-data)e) q=p; p=p-next; *(s-data)=e;s-next=p;q-next=s; m+; return OK; */ printf(插入后的单链表是 :n); print(L); /*/ /*单链表就

9、地逆置 */调试通过 Linklist &revelist(Linklist &L) LNode *h,*a; h=L-next; q=NULL; while(h!=NULL) a=h-next; h-next=q; q=h; /head=h; h=a; L-next=q; printf(n单链表已经成功逆置 !n); return L; /*/ /*退出程序 */调试通过 void tuichu(Linklist &L) /p=L-next; /while(p!=NULL) /p=p-next;free(p); while(L-next) p=L-next; L-next=p-next; free(p); printf(程序结束,谢谢使用 !n); /*主函数 */可以循环执行 void main() CreatList(L); print(L); caidan(); while(n=1) switch(n) case 1: insert(L); break; case 2: revelist(L);print(L); break; case 3: listdelete(L); break; case 4: print(L); break; default: break; caidan(); if (n=5) tuichu(L); /*/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 电子/通信 > 综合/其它

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