您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 实现循环单链表表各种基本运算的算法
课程实验报告实验题目:实验目的:题目:实现循环单链表表各种基本运算的算法编写程序实现循环单链表各种基本运算,并在此基础上设计一个主程序完成如下功能:1、初始化循环单链表2、依次采用尾插法插入a,b,c,d,e元素。3、输出循环单链表4、输出循环单链表的长度5、判断循环单链表是否为空6、输出循环单链表的第3个元素7、输出元素a的位置8、在第4个位置上插入元素f9、输出循环单链表10、删除循环单链表的第3个元素11、输出循环单链表12、释放循环单链表二#includestdio.h#includeconio.h#includestdlib.h#includewindows.hstructnode{charc;structnode*next;};structnode*head,*tail,*p,*q,*r;intcut1=0;voidshow(){printf(\n\n\t\t\t\t欢迎使用!);printf(\n\n\t\t\t1、加入元素);printf(\n\n\t\t\t2、输出全部元素和元素个数);printf(\n\n\t\t\t3、输出特定元素位置);printf(\n\n\t\t\t4、输出特定位置元素);printf(\n\n\t\t\t5、在特定位置插入元素);printf(\n\n\t\t\t6、删除特定位置元素);printf(\n\n\t\t\t7、删除全部元素);printf(\n\n\t\t\t0、退出);printf(\n\n\t\t请输入:);}voidchu(){head=(structnode*)malloc(sizeof(structnode));head-next=NULL;tail=head;}voidadd(){intn,i;printf(\t\t\t请输入要加入的元素个数:);scanf(%d,&n);for(i=0;in;i++){fflush(stdin);p=(structnode*)malloc(sizeof(structnode));printf(\t\t\t请输入元素(单个字母),按回车结束:);scanf(%c,&p-c);tail-next=p;p-next=NULL;tail=p;cut1++;}printf(\n\n\t\t加入完成,按任意键返回主菜单!);getch();}void_count(){intcut=1;if(head-next==NULL){printf(\n\n\n\n\n\n\t\t没有元素,按任意键返回主菜单!\n\n\n\n\n\n);getch();return;}p=head-next;while(p-next){课程实验报告实验题目:printf(%c-,p-c);cut++;p=p-next;}printf(%c\n,p-c);printf(\t共有%d个元素。,cut);printf(\n\n\t\t输出完成,按任意键返回主菜单!);getch();}voidshow1(){chars;intcut=0;fflush(stdin);printf(请输入要查找的元素:);scanf(%c,&s);p=head-next;while(p){cut++;if(p-c==s){printf(\n\t\t此元素位于链表第%d的位置!,cut);printf(\n\n\t\t输出完成,按任意键返回主菜单!);getch();return;}p=p-next;}printf(\n\t\t没有找到该元素!);printf(\n\n\t\t输出完成,按任意键返回主菜单!);getch();}voidshow2(){intcut=0,t;printf(请输入你要找的是第几个元素:);scanf(%d,&t);if(tcut1){printf(\n\t\t没有找到该元素!);printf(\n\n\t\t输出完成,按任意键返回主菜单!);getch();return;}elseif(t==cut1){printf(此元素是%c!,tail-c);printf(\n\n\t\t输出完成,按任意键返回主菜单!);getch();return;}else{p=head-next;while(p-next){cut++;if(cut==t){printf(此元素是%c!,p-c);printf(\n\n\t\t输出完成,按任意键返回主菜单!);getch();return;}p=p-next;}}}voidinsert1(){intt,cut=0;chars;fflush(stdin);printf(请输入要插入的位置:);scanf(%d,&t);fflush(stdin);p=(structnode*)malloc(sizeof(structnode));printf(\t\t\t请输入元素(单个字母),按回车结束:);scanf(%c,&p-c);课程实验报告实验题目:if(tcut1){printf(系统检测到您要插入的位置大于链表长度,自动加入到链表尾端);tail-next=p;p-next=NULL;tail=p;}else{q=head;while(q-next){cut++;if(t==cut){p-next=q-next;q-next=p;break;}q=q-next;}}cut1++;printf(\n\n\t\t插入完成,按任意键返回主菜单!);getch();}voiddel1(){intt,cut=0;chars;fflush(stdin);printf(请输入要删除的位置:);scanf(%d,&t);if(tcut1){printf(系统检测到您要删除的位置大于链表长度,删除失败!\n);printf(按任意键返回主菜单!\n);getch();return;}else{q=head;while(q-next){cut++;if(t==cut){p=q-next;q-next=q-next-next;free(p);break;}q=q-next;}}cut1--;printf(\n\n\t\t删除完成,按任意键返回主菜单!);getch();}voiddel2(){chars;printf(是否删除全部元素?按N取消,任意键继续。);s=getch();if(s=='n'&&s=='N'){}else{p=head-next;while(p){head-next=p-next;free(p);p=head-next;}}cut1=0;printf(操作完成,按任意键返回主菜单!\n);课程实验报告实验题目:getch();}intmain(){intcho;printf(\n\n\n\n\n\n\n\n\n\n\t\t\t程序已经启动,按任意键初始化链表!);if(getch()){chu();system(cls);}while(1){show();scanf(%d,&cho);if(cho==1){add();}elseif(cho==2){_count();}elseif(cho==3){show1();}elseif(cho==4){show2();}elseif(cho==5){insert1();}elseif(cho==6){del1();}elseif(cho==7){del2();}elseif(cho==0){system(cls);printf(\n\n\n\n\n\n\n\n\n\n\t\t\t程序已退出!\n\n\n\n\n\n);return0;}system(cls);}return0;}课程实验报告实验题目:指导教师:
本文标题:实现循环单链表表各种基本运算的算法
链接地址:https://www.777doc.com/doc-1221430 .html