数据结构实验报告顺序表和链表_第1页
数据结构实验报告顺序表和链表_第2页
数据结构实验报告顺序表和链表_第3页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、实验报告课程名称数据结构实验项目 实验一线性表的生成与操作题目一顺序表和链表的创建与基本操作系 别 _ 计算机学院专 业计算机大类_ _班级 / 学号 (1406/2014011288)学生(文学)实验日期(2015年10月19日)成 绩指导教师 黄改娟实验题目:实验一线性表的生成与操作顺序表和链表的创建与基本操作(自己所选择实验题目,必填)、实验目的1)掌握线性表的顺序存储和链式存储结构;2) 验证顺序表及链表的基本操作的实现; ( 验证 )3) 理解算法与程序的关系,能够将算法转换为对应程序;4) 体会线性表在实际应用中能够解决的问题。 (设计、综合)、 实验容1) 根据实验一题目列表,选

2、定题目,说明题目的主要需求;2) 结合所选定的题目,定义存储结构,并完成对应应用的线性表创建、插入、删除、 查找等基本操作的算法描述;3) 程序编码实现,并获得运行结果。、 报告容1) 实验题目及主要存储结构定义(提示:请根据所选定题目,描述存储结构) 题目:顺序表和链表的创建及基本操作 顺序表我是采用数组存储的,链表是采用结构体存储的2) 结合题目,说明对相应线性表的基本操作算法描述 (提示:可用自然语言、流程图、伪代码等均可,要求对每一个操作,都给出具体 的算法描述)基本操作:#顺序表 #(1) 插入:在线性表中的x位置插入y-将x位置及之后的元素都往后挪一位, 将 y 的值赋给 ax.(

3、2) 删除:删除位置为x的元素-另y=ax,然后x之后的元素都往前挪一位。(3) 查找:寻找值为y的元素-从a0开始,若ai=y ,则返回i,否则i+。 #链表 #(1) 插入: 当 i 小于要插入的位置 x 时, i+ , 插入 p-datap-next=s-next;s-next=p;( 2)删除:当 p-data 不等于要删除的值 x 时, p=p-next ;q=p-next; p-next=q-next; free(q);( 3)查找:当 p-data!=x 时, p=p-next ,找到之后返回 p-data3) 程序源码(提示:列出所编写程序的代码。如果利用图形界面 IDE 等编

4、程,这里只要求写出 关键操作的程序代码。此外,程序一定要有注释说明)1. 顺序表的基本操作(用数组实现)#include #include int main()int *a;int N,i,j,e,x;printf( 请输入线性表长度 N: ); scanf(%d,&N);a=(int *)malloc(N*sizeof(int); for(i=0;iN;i+) / 初始化 ai=i;printf( 初始顺序表为: ); for(i=0;i=i-1;j-)aj+1=aj;ai-1=e;for(i=0;iN+1;i+) printf(%d ,ai);printf(n);else if(x=1)

5、/ 删除 printf( 请输入删除位置 i:); scanf(%d,&i);for(i;iN;i+)ai-1=ai; for(i=0;iN-1;i+) printf(%d ,ai);printf(n);else if(x=2) / 查找 printf( 请输入查找位置 i:);scanf(%d,&i); e=ai-1; printf(%dn,e);else printf( 输入错误! ); free(a); a=NULL; return 0;2. 单链表的基本操作 #include #include #define ERROR 0 #define OK 1 typedef int statu

6、s; typedef int ElemType; typedef struct Node ElemType data; struct Node *next; LNode,*LinkList;void Build(LinkList L)/建立一个带头结点的单链表int n;LinkList p,q;p=L;printf( 请输入 n:n); scanf(%d,&n);printf( 请输入 n 个数据元素 :n); while(n-) q=(LinkList)malloc(sizeof(LNode); scanf(%d,&q-data);q-next=NULL; p-next=q;p=q;voi

7、d Print(LinkList L)/ 计算单链表的长度,然后输出单链表 int num=0;LinkList p;p=L-next;while(p)num+;printf(%d ,p-data);p=p-next;printf(n 长度为 %dn,num);void Tips()printf( 按数字键选择相应操作 n); printf( 输出单链表及其长度 :n);printf( 删除值为 x 的结点 :n);printf( 在第 n 个位置插入值 X:n);printf( 查找值为 X 的位置 n:n);printf( 退出 :n); void Delete(LinkList L,in

8、t x)/ 删除值为 x 的结点 LinkList p,q;p=L;while( p-next &p-next-data!=x) p=p-next;if(p-next) q=p-next; p-next=q-next;free(q); printf( 删除成功 !nn);Print(L);elseprintf( 链表中没有 %dnn,x);在第 n 个位置插入值 Xvoid Insert(LinkList L,LinkList p,ElemType e)/ LinkList s;int i=1;s=L;while(inext;i+; p-next=s-next; s-next=p;Print(

9、L);/ 查找值为 X 的位置 nvoid find(LinkList L,int e)int n=1;LinkList p; p=L;while(p-next&p-next-data!=e) p=p-next;n+;if(p-next)printf(%d 的位置是 %dn,e,n); elseprintf( 不存在 %d,e);int main()int op,x,n;LinkList L,p;L=(LinkList)malloc(sizeof(LNode); L-next=NULL;L-data=-1;Build(L);Tips();scanf(%d,&op);while(op)switc

10、h(op)case 1:Print(L);break;case 2:printf( 请输入要查找的删除 X:n);scanf(%d,&x);Delete(L,x);break;case 3:printf( 请输入要插入的元素 X 和插入的位置 n:n); scanf(%d,&x);scanf(%d,&n); p=(LinkList)malloc(sizeof(LNode);p-data=x;Insert(L,p,n);printf( 插入成功 !nn);break;case 4:printf( 请输入要查找的元素 X:n); scanf(%d,&x);find(L,x);Tips();scan

11、f(%d,&op);return 0;4) 运行结果 (提示:运行结果要求能反应每一种操作前后的结果变化情况)1.顺序表请输入线性表长度皿10初始顺序表为:0 12 3 4 5 6 7 8 9 届只请皤0,輛除诸输1,查找輸入人0 请输入插入住晝i和發 7 00123450678 勺请按任意犍继续 -请输人线性表长度區6初协帧序表九0 1 2 3 4 5删除请输1查找输入N 1请输入初條位1:40 L 2 4 5请按任意键继绞.| 血 匚:WI N DOWSVy5tern32cmd .exe青输入线性表长度血加初始顺序表为 * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 1

12、4 15 16 17 18 19 擂入请输0.删除请输1,查找输入厶2青输入查找位置i负19青按任意键继纨2.链表谙输入m10请输入n个数据元素:9874563210按数宇键选择相应操作 输岀单链表及其长度;删除值为卞的结点: 在第垃个位置插人值心查找值为X的位置皿退出:198745632 1 0长度为10按数字键选择相应操作输出单错裘及其长度:删除值为况的结点:在第n个位置插入值X:查找值为芷的位置n:退岀:2请输入要査找的删除X;7删除成功! !9 3 4 5 6 3 2 1 0 长度为9刪除成功!!984563210艮度为9按数字犍选择相应操作输出单链表忌其长度:删除值为工的结点:在第口个位直插入値X;查找值为油位畫m退出:3请输入要插入的元素規口插入的位置口:0 10984563210长度禹10插入成功! !

温馨提示

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

评论

0/150

提交评论