发布时间 : 星期六 文章链表基本操作更新完毕开始阅读
二、函数调用及主函数设计
主函数主要设计:
zhujiemian(); //显示主界面
cin>>a; //输入要进行的操作的序号 cout< switch(a) //用switch语句进行选择操作 { case 1: //初始化 if(init(L)==1) cout<<\初始化成功!\ else cout<<\初始化失败!\ break; case 2: if(makeempty(L)==1) //链表置空 cout<<\链表已清空!\ else cout<<\链表清空失败!\ break; case 3: //链表的长度 b=getlength(L); cout<<\链表的长度为:\ break; case 4: //判断链表是否空 if(isempty(L)==1) cout<<\链表不空!\ else cout<<\链表为空!\ break; case 5: //判断链表是否满 if(isfull(L)==1) cout<<\链表不满!\ else cout<<\链表已满!\ break; case 6: //遍历链表 show(L); break; case 7: //链表是否有要查找元素 cout<<\您要查找的元素:\ cin>>b; if(find(L,b)==1) cout<<\链表中有元素\ else cout<<\链表没中有元素\ break; case 8: //输出链表要查找元素的位置 cout<<\您要查找的元素为:\ cin>>b; if(location(L,b)==0) cout<<\没有您要查找的元素\ else cout<<\您查找的元素\在第\个位置。\ break; case 9: do { cout<<\输入你要插入的位置和元素\ cin>>b>>c; while (b<=0||b>getlength(L)+1) /* 此处可以对错误的输入进行判断 */ { cout<<\插入位置错误!请重新插入!\ cin>>b>>c; } if(insert(L,b,c)==0) cout<<\您插入的位置不对,插入失败!\ else cout<<\插入成功!\ cout<<\是否继续插入元素(Y/y继续),其他键停止插入\\n\提示是否继续进行插入操作 cin>>YES; } while(YES=='Y'||YES=='y'); break; case 10: do { if(getlength(L)==0) //判断链表是否为空若是则输出链表为空,并继续 { cout<<\链表为空无法删除!\ break; } cout<<\输入你要删除元素的位置:\ cin>>b; while(b<=0||b>getlength(L)) /* 此处可以对错误的输入进行判断 */ { cout<<\输入错误!请重新输入!\ cin>>b; } if(deleteelem(L,b)==0) cout<<\您删除的位置不对,删除失败!\ else cout<<\删除成功!\ cout<<\是否继续删除元素(Y/y继续),其他键停止删除\\n\提示是否继续进行删除操作 cin>>YES; } while(YES=='Y'||YES=='y'); break; default: break; } system(\按任意键继续 system(\清理屏幕上的内容 zhujiemian();///显示主界面 cin>>a; //输入要进行操作的序号 cout< }while(a>0&&a<=10);///对进行输入的数进行判断(不在0—9则程序结束) 说明: 通过调用序列号不同的函数进行各种操作。函数根据每次输入的数进行判断不在1—10内的函数将结束,否则将继续进行。 三、程序调试及运行结果分析 程序第一步必须执行初始化,否则程序不能运行。 在程序第一步必须执行初始化后,程序完美运行,在进行任何函数操作程序都是正常运行,而且本程序对插入和删除时进行错误检测如有的地方不可以插入,有点地方不能删除,如果链表为空时则程序会输出链表为空,并继续进行其他操作,大大减少了程序的bug。 四、实验总结 通过这次试验我熟悉了对链表的基本操作,对基本的链表操作有了很好的掌握,知道自己容易在什么地方出错。 五、程序清单 //实验一_1.h #include \#include \#include %using namespace std; #define MAXSIZE 100 //链表的最大长度 typedef int elemtype; typedef struct STD { elemtype elem; STD *next; }list, * linklist; void zhujiemian() { cout< cout<<\【*******************数据结构实验一*******************】\ cout<<\【****************************************************】\ cout<<\【1 链表初始化】\ cout<<\【2清空链表】\ cout<<\【3求链表长度】\ cout<<\【4链表是否为空】\ cout<<\【5检查链表是否为满】\ cout<<\【6遍历链表】\ cout<<\【7从链表中查找元素】\ cout<<\【8 从链表中查找与给定元素值相同的元素在表中的位置】\ cout<<\【9向链表中插入元素】\ cout<<\【10从链表中删除元素】\ cout<<\【其他键退出】\ cout<<【****************************************************】\ cout<<\【*********请选择要进行操作的序号(1--10):***********】\} int init(linklist &L) { L=(linklist)malloc(sizeof(list)); if(!L) return 0; L->next=NULL; L->elem=0; return 1; } int insert(linklist &L, int i, elemtype e) { linklist p, s; int j = 0; p = L; while (p&&j p = p->next; j ++; } if(j>i-1||!p) return 0; s = (linklist)malloc(sizeof(list)); s->elem = e; s->next = p->next; p->next = s; L->elem++; return 1; } int deleteelem(linklist &L,int i) { linklist p,q; int j=0; p=L;