




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中东地区化工仓储租赁与安全管理合同
- 物流园区工程总承包及道路照明系统协议
- 仓储自动化叉车调度员派遣服务合同范本
- 航天器电池系统运行监控补充协议
- 插画绘本画蛇添足绘本故事成语故事
- 软件代理销售培训课件
- 《肺癌患者的护理课件》
- 《病房护理质量核查》课件
- 餐饮服务卫生与安全
- 动物的生长与繁殖课件
- 市政道路工程施工方案方案
- 花键计算公式DIN5480
- 2024年第三季度意识形态分析研判报告5篇
- DB11T 1320-2023 危险场所电气防爆安全检测技术规范
- 2024年时事政治考点大全(173条)
- 施工场地治安保卫管理计划
- 6《夜间飞行的秘密》(课件)统编版语文四年级上册
- 2024年秋季新人教版八年级上册物理全册教案(2024年新教材)
- 高支模专项施工方案(专家论证后)
- 解读国有企业管理人员处分条例课件
- 火力发电厂汽轮机控制系统技术条件
评论
0/150
提交评论