数据结构单链表_第1页
数据结构单链表_第2页
数据结构单链表_第3页
数据结构单链表_第4页
数据结构单链表_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论