




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/*课程设计题四:链表操作 一、 设计目的 1掌握线性链表的建立。 2掌握线性链表的基本操作。 二、设计内容和要求 利用链表的插入运算建立线性链表,然后实现链表的查找、删除、计数、输出、排序、逆置等运算,插入、删除、查找、计数、输出、排序、逆置要单独写成函数,并能在屏幕上输出操作前后的结果。 */#include#include#include#define max 50typedef int elemtype;typedef struct node /定义单链表节点类型 elemtype data;struct node *next;int cur;linklist;void createl
2、ist(linklist *&l,elemtype a,int n) /尾插法建立单链表linklist *s,*r;int i;l=(linklist *)malloc(sizeof(linklist); /创建头结点l-next=null;r=l;/r始终指向终端结点,开始时指向头结点for (i=0;idata=ai;r-next=s;/将*s插入*r之后r=s;s-next=null;/终端结点next域置为nullint listinsert(linklist *&l,int i,elemtype e) /在单链表l中的第i个位置上插入元素e linklist *p=l,*f;int
3、 j;/p=l;j=0;while(p&jnext;+j; if(!p|jdata=e;f-next=p-next;p-next=f;printf(ok);return(1);int listdelete(linklist *&l,int i,elemtype &e) /在单链表l中删除第i个元素linklist *p,*q;int j;p=l;j=0;while(p-next&jnext;+j;if(!(p-next)|ji-1)printf(i error);return(0);q=p-next;e=q-data;p-next=q-next;free(q);printf(ok);retur
4、n(1);int locateelem(linklist *l,elemtype e) /在单链表l中查找元素elinklist *p=l-next;int n=1;while(p!=null&p-data!=e)p=p-next;n+;if(p=null)return(0);else return(n);int listlength(linklist *l) /计算单链表l元素的个数linklist *p=l;int i=0;while(p-next!=null)i+;p=p-next;return(i);void displist(linklist *l) /显示单链表l linklist
5、 *p=l-next;while(p!=null)printf(%d ,p-data);p=p-next;printf(n);void sort( linklist *l) /选择排序 linklist *q,*s; int t; linklist *p=l; while(p) s=p; q=p-next; while(q) if(q-datadata) s=q; q=q-next; if(s!=p) t=p-data; p-data=s-data; s-data=t; p=p-next; void reverse(linklist *l) /原地置换linklist *s,*t;linkli
6、st *p=l;s=p-next;while(s-next!=null) / 主要置换过程t=s-next;s-next=p;p=s;s=t;s-next=p;l-next-next=null; /收尾l-next=s; /赋头void menu() /主菜单函数printf(n); printf(*链表操作*n);printf(n);printf( 主菜单 n ); printf(* 1.创建 *n); printf(* 2.插入 *n); printf(* 3.删除 *n); printf(* 4.查找 *n); printf(* 5.计数 *n); printf(* 6.输出 *n);
7、printf(* 7.排序 *n); printf(* 8.逆置 *n); printf(* 9.退出 *n);printf( n);printf(*n); void main() /主函数 int select,i,n; linklist *h;elemtype amax; /定义一个元素数组,长度为maxelemtype e;menu();printf(在选择操作前请先选择1功能实现用尾插法创建单链表!nn);printf(请输入你要创建的单链表的节点个数:);scanf(%d,&n);do printf( n); printf(请选择你要执行的操作:); scanf(%d,&select
8、); switch(select) case 1:printf(输入单链表元素:); /创建单链表 for( i=0;in;i+) scanf(%d,&ai); createlist(h, a, n);break; case 2: printf(输入你要插入的元素位置i:); /插入元素 scanf(%d,&i); printf(请输入你要插入的元素的值e:); scanf(%d,&e);listinsert(h, i, e); printf(插入元素后的单链表显示:); displist(h); break; case 3: printf(请输入你要删除的位置i:); /删除元素 scanf
9、(%d,&i); listdelete(h, i,e); printf(删除元素后的单链表显示:); displist(h); break; case 4: printf(输入你要查找的元素e:); scanf(%d,&e); printf(你要查找的元素的位置i为:%dn,locateelem(h, e); /查找元素 break; case 5: printf(单链表h的长度=%dn,listlength(h); /计数 break; case 6: printf(显示单链表元素:);displist(h) ; /输出单链表 break; case 7: sort(h); printf(按从小到大的顺序排序后的结果为:); /按从小到大的顺序排序 di
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年度注册公用设备工程师常考点试卷及答案详解【夺冠系列】
- 安全教试题及答案
- 乐高碰撞测试题及答案
- 能源互联网背景下的智能电网重构研究-洞察阐释
- 基于AI的能源消耗预测与优化研究-洞察阐释
- 出租车公司新能源汽车运营权与股权转让合同
- 2025年四川省非全日制新劳动合同书样本
- 茶园资源整合与茶叶产业链承包合同
- 时尚家居定制安装与售后保修合同
- 2025国内货物买卖合同范本示例
- 幼儿园教师资格考试面试2024年下半年试题及解答
- 《工程招投标与合同管理》全套教学课件
- DL∕T 5342-2018 110kV~750kV架空输电线路铁塔组立施工工艺导则
- 2024年全国统一考试高考新课标Ⅰ卷数学试题(真题+答案)
- 抖音直播运营策划部门职责及绩效考核指标
- 2024江苏扬州市高邮市交通产业投资集团有限公司招聘17人笔试备考题库及答案解析
- 2024年高一生物学考模拟卷01
- 椎旁小关节病变影像诊断
- 2024年中国南水北调集团水网智慧科技限公司秋季公开招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- MOOC 临床生物化学检验技术-杭州医学院 中国大学慕课答案
- JJG 705-2014液相色谱仪行业标准
评论
0/150
提交评论