学号:123745姓名:胡文凯实验二报告(链表)_第1页
学号:123745姓名:胡文凯实验二报告(链表)_第2页
学号:123745姓名:胡文凯实验二报告(链表)_第3页
学号:123745姓名:胡文凯实验二报告(链表)_第4页
学号:123745姓名:胡文凯实验二报告(链表)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、安徽工商职业学院实验报告课程名称:数据结构班级:软件二班学号:123745姓名:胡文凯实验名称:线性表的链式存储结构实验目的:1、掌握用VC+调试程序的基本方法。 2、掌握线性表链式存储结构的基本运算。实验原理(预习内容):1、线性表的链式存储思想。 2、单链表的创建、查找、插入、删除等操作的算法。实验器材(软件):Computer,Windows OS,VC+实验过程记录:1、链表的基本操作问题描述 设计一个链表类型LinkList,并实现以下功能:1)初始化表;2)创建表;3)按指定位置或按值查询数据元素;4)在指定位置插入一个数据元素;5)删除指定位置上的一个元素或删除指定值的元素;6)

2、遍历输出表元素;0)退出基本要求 把上述每个功能分模块分别编制算法实现,然后在主程序中调用。实验程序清单:#includestdio.h#includestdlib.htypedef struct nodeint data;struct node *next;LNode,*Linklist;Linklist L;/生成带头结点的空链表Linklist InitList()Linklist L;L=(Linklist)malloc(sizeof(LNode);L-next=NULL;return L;system(pause);/表的输出void OutList(Linklist L) Link

3、list p=L-next; if(p-next=NULL) printf(表中没有元素!); while(p!=NULL) printf(%d ,p-data); p=p-next; printf(n); system(pause);Linklist CreateList(Linklist L) Linklist p,r; int x; r=L; printf(请输入元素,直到输入0结束!); scanf(%d,&x); while(x!=0) p=(Linklist)malloc(sizeof(LNode); p-data=x; r-next=p; r=p; scanf(%d,&x); r

4、-next=NULL; return L; / system(pause);/查找void SearchList(Linklist L) int t,x,pos,count=1,a50,i=1; Linklist p; p=L-next; printf(*n); printf( 1、按位查找!n); printf( 2、按值查找!n); printf(*n); printf(请输入查找的方式:); scanf(%d,&t); if(t=1) printf(请输入查找的位置:); scanf(%d,&pos); while(count!=pos&p) count+;p=p-next; if(p!

5、=NULL) printf(你要找到的数是%d,p-data); else printf(查找的位置错误!); system(pause); if(t=2) printf(请输入你要查找的数:); scanf(%d,&x); while(p) if(p-data=x) printf(你要找的数是%d,p-data);break; else p=p-next; if(p=NULL) printf(没有你要找的数); else printf(选择错误!); system(pause);/插入void InserList(Linklist L) Linklist p,s; int pos,x,cou

6、nt=0; p=L; printf(请输入你要插入的位置:); scanf(%d,&pos); printf(请输入你要插入的数:); scanf(%d,&x); while(p-next&countnext; +count; if(!p|countpos-1) printf(error!); else s=(Linklist)malloc(sizeof(LNode); s-data=x; s-next=p-next; p-next=s; OutList(L);/删除void DeleList(Linklist L) Linklist p=L,q; int pos,count=0; print

7、f(你要删除第几位数:); scanf(%d,&pos); while(p-next&countnext; +count; if(!p|countpos-1) printf(error!); else q=p-next;p-next=q-next;free(q); OutList(L);void menu()printf(*n);printf( 1、生成链表 2、创建链表 n);printf( 3、输出链表 4、查找 n);printf( 5、插入 6、删除 n);printf( 0、退出 n);printf(*n);main()int t;while(1)system(cls);menu()

8、;printf(请选择操作:);scanf(%d,&t); switch(t)case 1:L=InitList(&L);break; case 2:L=CreateList(L);break;case 3:OutList(L);break;case 4:SearchList(L);break;case 5:InserList(L);break;case 6:DeleList(L);break;case 0:exit(0);default:printf(选择错误,请重新输入06:);system(pause);实验步骤及实验结果的截图:2、有序表的合并问题描述 已知表la和lb中的数据元素按递

9、增有序排列,将la和lb表中的数据元素,合并成为一个新的表lc。基本要求 lc中的数据元素仍按递增有序排列,并且不破坏la和lb表。实验程序清单:实验步骤及实验结果的截图:#include stdio.h#include stdlib.h#define MAXSIZE 200typedef int datatype;typedef struct datatype dataMAXSIZE; int length;SqList;SqList A,B,C; void CreatList(SqList *A) datatype x; A-length=0; printf(输入表A元素:); scanf

10、(%d,&x); while(x!=-1) A-length+; A-dataA-length=x; scanf(%d,&x); void CreatListB(SqList *B) datatype x; B-length=0;printf(n请输入表B元素:);while(x!=-1) B-length+; B-dataB-length=x; scanf(%d,&x); zuhe(SqList A,SqList B) int i=1,j=1,k;C.length=0; while(i=A.length&j=B.length) if(A.dataiB.dataj) C.length+;C.dataC.length=B.dataj;+j; while(i=A.length) C.length+;C.dataC.length=A.datai;+i; while(j=B.length) C.length+;C

温馨提示

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

最新文档

评论

0/150

提交评论