链表基本操作

发布时间 : 星期三 文章链表基本操作更新完毕开始阅读

二、函数调用及主函数设计

主函数主要设计:

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;

while (p->next&&j

联系合同范文客服:xxxxx#qq.com(#替换为@)