1、 L=(linklist)malloc(sizeof(list);/头结点申请内存。 if(!L) /判断有无申请到空间。 return 0; /没有申请到内存,参数失败返回0 L-next=NULL;elem=0; /单链表中有多少元素 return 1; /成功参数返回14、清空单链表 /* 函数功能:把链表清空 成功清空链表返回1 */int makeempty(linklist & linklist p,q; p=L-next; while(p) /当p非空时,删除p q=p; p=p- free(q); /只剩头指针,所以L-next=NULL /清空后链表中元素为0 /清空后返回1
2、5、求链表长度 /* 函数功能:返回链表的长度参数;函数返回链表的长度 */int getlength(linklist L) linklist p; p=L- int j=0; while(p) j+; /统计链表中元素 p=p- return j; /最后返回链表长度.6、判断链表是否为空/* 函数功能:判断链表是否为空链表为空时返回0,不为空返回1 */int isempty(linklist L) if(L-next) /头结点后有元素表示链表不空则返回1 return 1; else return 0; /头结点后没有元素表示链表不空则返回07、检查链表是否为满判断链表是否为满链表为
3、满时返回0,不为满返回1 */int isfull(linklist L)elem = MAXSIZE) /头结点的elem储存的为链表的长度。 /其小于MAXSIZE表示链表不满 /否则返回08、遍历链表遍历链表,输出每个节点的elem值通过循环逐个输出节点的elem值 */void show(linklist L) linklist p; if(isempty(L)=0) /当链表为空时则输出链表为空 cout链表为空!; while(p) /当链表为不空时则输出链表每个节点的elem值 coutelemelem=i) /判断有无元素I,有返回1 return 1; /没有找到返回010、
4、从链表中查找与给定元素值相同的元素在表中的位置 从链表中查找给定元素的位置如果链表中有给定元素i则返回元素的位置, 没有则返回0 */int location(linklist L,int i) int j=0; j+;elem=i) /判断有无元素i,有返回其的位置j return j; /没有则返回011、向链表中插入元素向链表中的某个位置插入元素链表(linklist L),位置(int i),元素(elemtype e)成功插入返回1,否则返回0 */int insert(linklist &L, int i, elemtype e) linklist p, s; int j = 0;
5、 p = L; while (p&j j +; if(ji-1|!p) /不符合条件返回0 s = (linklist)malloc(sizeof(list); /给节点s分配内存 s-elem = e;next = p- /插入操作 p-next = s;elem+; /插入完成后头结点的elem加1 /成功插入返回112、从链表中删除元素在链表中的某个位置删除元素成功删除返回1,否则返回0 */int deleteelem(linklist &L,int i) linklist p,q; int j=0; p=L; while (p-next& p=p- j+; if(j(p-next)
6、/不符合条件返回0 q=p- p-next=q- /删除操作 free(q); L-elem-; /插入完成后头结点的elem减1 return 1; /成功删除返回113、主界面函数显示所有操作功能无 */void zhujiemian() coutendla; /输入要进行的操作的序号 do switch(a) /用switch语句进行选择操作 case 1: /初始化 if(init(L)=1) cout初始化成功! else初始化失败! break; case 2: if(makeempty(L)=1) /链表置空链表已清空!链表清空失败! case 3: /链表的长度 b=getle
7、ngth(L); cout链表的长度为:bb; if(find(L,b)=1)链表中有元素链表没中有元素 case 8: /输出链表要查找元素的位置您要查找的元素为: if(location(L,b)=0)没有您要查找的元素您查找的元素在第location(L,b)bc; while (bgetlength(L)+1)/* 此处可以对错误的输入进行判断 */ cout if(insert(L,b,c)=0)您插入的位置不对,插入失败! else插入成功!是否继续插入元素(Y/y继续),其他键停止插入n/提示是否继续进行插入操作YES; while(YES=Y|YES=y); case 10:
8、if(getlength(L)=0)/判断链表是否为空若是则输出链表为空,并继续链表为空无法删除! break;输入你要删除元素的位置: while(b /输入要进行操作的序号 while(a0&a j +;p) s = (linklist)malloc(sizeof(list); s-next) if(L-next) else linklist p; p=L- if(isempty(L)=0) while(p) return j; q=p; free(q); if(p-elem=i) return 0;= MAXSIZE)/main.cpp实验一.hint main() char YES; linklist L; int a,b,c; zhujiemian(); switch(a) if(makeempty(L)=1)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1