实现循环单链表表各种基本运算的算法.doc_第1页
实现循环单链表表各种基本运算的算法.doc_第2页
实现循环单链表表各种基本运算的算法.doc_第3页
实现循环单链表表各种基本运算的算法.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

。实验目的:题目: 实现循环单链表表各种基本运算的算法 编写程序实现循环单链表各种基本运算,并在此基础上设计一个主程序完成如下功能:1、初始化循环单链表2、依次采用尾插法插入a,b,c,d,e元素。3、输出循环单链表4、输出循环单链表的长度5、判断循环单链表是否为空6、输出循环单链表的第3个元素7、输出元素a的位置8、在第4个位置上插入元素f9、输出循环单链表10、删除循环单链表的第3个元素11、输出循环单链表12、释放循环单链表二#include #include #include #include struct node char c; struct node *next;struct node *head,*tail,*p,*q,*r;int cut1=0;void show() printf(nntttt欢 迎 使 用!); printf(nnttt1、加入元素); printf(nnttt2、输出全部元素和元素个数); printf(nnttt3、输出特定元素位置); printf(nnttt4、输出特定位置元素); printf(nnttt5、在特定位置插入元素); printf(nnttt6、删除特定位置元素); printf(nnttt7、删除全部元素); printf(nnttt0、退出); printf(nntt请输入:);void chu() head=(struct node*)malloc(sizeof(struct node); head-next=NULL; tail=head;void add() int n,i; printf(ttt请输入要加入的元素个数:); scanf(%d,&n); for(i=0; ic); tail-next=p; p-next=NULL; tail=p; cut1+; printf(nntt加入完成,按任意键返回主菜单!); getch();void _count() int cut=1; if(head-next=NULL) printf(nnnnnntt没有元素 ,按任意键返回主菜单!nnnnnn); getch(); return ; p=head-next; while(p-next) printf(%c-,p-c); cut+; p=p-next; printf(%cn,p-c); printf(t共 有 %d 个 元 素。,cut); printf(nntt输出完成,按任意键返回主菜单!); getch();void show1() char s; int cut=0; fflush(stdin); printf(请输入要查找的元素:); scanf(%c,&s); p=head-next; while(p) cut+; if(p-c=s) printf(ntt此元素位于链表第%d的位置!,cut); printf(nntt输出完成,按任意键返回主菜单!); getch(); return ; p=p-next; printf(ntt没有找到该元素!); printf(nntt输出完成,按任意键返回主菜单!); getch();void show2() int cut=0,t; printf(请输入你要找的是第几个元素:); scanf(%d,&t); if(tcut1) printf(ntt没有找到该元素!); printf(nntt输出完成,按任意键返回主菜单!); getch(); return ; else if(t=cut1) printf(此元素是 %c !,tail-c); printf(nntt输出完成,按任意键返回主菜单!); getch(); return ; else p=head-next; while(p-next) cut+; if(cut=t) printf(此元素是 %c !,p-c); printf(nntt输出完成,按任意键返回主菜单!); getch(); return ; p=p-next; void insert1() int t,cut=0; char s; fflush(stdin); printf(请输入要插入的位置:); scanf(%d,&t); fflush(stdin); p=(struct node*)malloc(sizeof(struct node); printf(ttt请输入元素(单个字母),按回车结束:); 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(nntt插入完成,按任意键返回主菜单!); getch();void del1() int t,cut=0; char s; 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(nntt删除完成,按任意键返回主菜单!); getch();void del2() char s; 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();int main() int cho; printf(nnnnnnnnnnttt程序已经启动,按任意键初始化链表!); if(getch() chu(); system(cls); while(1) show(); scanf(%d,&cho); if(cho=1) add(); else if(cho=2) _count(); else if(cho=3) show1(); else if(cho=4) show2(); else if(cho=5) insert1(); else if(cho=6) del1(); else if(ch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论