实验二_线性链表_09082229刘增鹏

实验二_线性链表_09082229刘增鹏

ID:11223736

大小:51.00 KB

页数:6页

时间:2018-07-10

实验二_线性链表_09082229刘增鹏_第1页
实验二_线性链表_09082229刘增鹏_第2页
实验二_线性链表_09082229刘增鹏_第3页
实验二_线性链表_09082229刘增鹏_第4页
实验二_线性链表_09082229刘增鹏_第5页
资源描述:

《实验二_线性链表_09082229刘增鹏》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验2线性链表一、实验的目的要求a)了解线性表的特性,以及它们在实际问题中的应用。b)掌握链表建立及逆置的实现方法及它们的基本操作。二、题目、线性链表的操作。设计一个完整的线性链表操作软件系统,对线性链表实现在表中查找数据;在表中插入数据;两个线性链表的连接等操作。可以使用不带表头的也可以使用带表头的,可以对单链表操作也可以对双向链表操作,还可以对单或双向循环链表进行操作。你还可以根据自己的想法做一些其它的操作。但至少在这个程序系统中包含三个以上的操作。三、算法描述插入:要在带头结点的单链表L中第i个数据元素

2、之前插入一个数据元素e,需要首先在单链表中找到第i-1个结点并由指针pre指示,然后申请一个新的结点并由指针s指示,其数据域的值为e,并修改第i-1个结点的指针使其指向s,然后使s结点的指针域指向第i个结点。删除:欲在带头结点的单链表L中删除第i个结点,则首先要通过计数方式找到第i-1个结点并使p指向第i-1个结点,而后删除第i个结点并释放结点空间。查找:按值查找是指在单链表中查找是否有结点值等于e的结点,若有的话,则返回首次找到的其值为e的结点的存储位置,否则返回NULL。查找过程从单链表的头指针指向的头结

3、点出发,顺着链逐个将结点的值和给定值e作比较。逆置:只要将原表头结点指向表尾,并将每个结点的指针域修改一下,它指向其前一个结点。四、程序清单#include#include#include#definenull0typedefcharElemType;typedefstructLnode{ElemTypedata[20];structLnode*next;}Lnode;Lnode*L;Lnodeh;Lnode*creat_L();voidprin(in

4、tA);voidprint(intB);voidout_L(Lnode*L);intsss(Lnode*L);voidinsert_L(Lnode*L,inti,ElemTypea[20]);intclear_L(Lnode*L);ElemTypedelete_L(Lnode*L,inti);intlocat_L(Lnode*L,ElemTypea[20]);voidmain(){inti,k,loc,l,A,B;ElemTypea[20],b[20];prin(A);printf("1.建立数据输入0结

5、束");do{print(B);scanf("%d",&k);switch(k){case0:break;case1:{L=creat_L();out_L(L);}break;case2:{printf("请输入插入位置:");scanf("%d",&i);printf("请输入要插入的数据:");scanf("%s",a);i=i-1;insert_L(L,i,a);out_L(L);}break;case3:{printf("输入要删除数据的位置:");scanf("%d",&i);b[20]=del

6、ete_L(L,i);out_L(L);}break;case4:{printf("输入要查找的数据:");scanf("%s",b);loc=locat_L(L,b);if(loc==-1)printf("未找到指定数据!");elseprintf("已找到数据的位置是%d",loc);}break;case5:{sss(L);printf("逆置的结果如下");out_L(L);}break;case6:{loc=clear_L(L);if(loc==1)printf("清除成功");el

7、seprintf("原链表为空表");printf("-------请选择-------");printf("1.建立数据");}break;}}while(k!=0);}Lnode*creat_L()//建立单链表{Lnode*h,*p,*s;inti=2;ElemTypea[20];h=(Lnode*)malloc(sizeof(Lnode));h->next=null;p=h;printf("请输入第1个数据:");getchar();gets(a);do{s=(Lnode*)malloc(

8、sizeof(Lnode));strcpy(s->data,a);s->next=null;p->next=s;p=s;printf("请输入第%d个数据:",i++);gets(a);}while(a[0]!='0');return(h);}voidprin(intA)//输出字幕{printf("----单链表的基本操作----");printf("建立一个单链表,可以进行如下操作");

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。