欢迎来到天天文库
浏览记录
ID:57333685
大小:60.70 KB
页数:9页
时间:2020-08-12
《数据结构实验报告顺序表和链表.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告课程名称数据结构实验项目实验一线性表的生成与操作题目一顺序表和链表的创建与基本操作系别____计算机学院_______专业____计算机大类___班级/学号__(1406/)_____学生姓名_______(孙文学)_________实验日期_(2015年10月19日)成绩_______________________指导教师黄改娟实验题目:实验一线性表的生成与操作------顺序表和链表的创建与基本操作(自己所选择实验题目,必填)一、实验目的1)掌握线性表的顺序存储和链式存储结构;2)验证顺序表及链表的基本操作的实现;(验证)1)理解算法与程序的关系,
2、能够将算法转换为对应程序;2)体会线性表在实际应用中能够解决的问题。(设计、综合)一、实验内容1)根据实验一题目列表,选定题目,说明题目的主要需求;2)结合所选定的题目,定义存储结构,并完成对应应用的线性表创建、插入、删除、查找等基本操作的算法描述;3)程序编码实现,并获得运行结果。二、报告内容1)实验题目及主要存储结构定义(提示:请根据所选定题目,描述存储结构)题目:顺序表和链表的创建及基本操作顺序表我是采用数组存储的,链表是采用结构体存储的2)结合题目,说明对相应线性表的基本操作算法描述(提示:可用自然语言、流程图、伪代码等均可,要求对每一个操作,都给出具体
3、的算法描述)基本操作:#顺序表#(1)插入:在线性表中的x位置插入y----将x位置及之后的元素都往后挪一位,将y的值赋给a[x].(2)删除:删除位置为x的元素----另y=a[x],然后x之后的元素都往前挪一位。(3)查找:寻找值为y的元素----从a[0]开始,若a[i]==y,则返回i,否则i++。#链表#(1)插入:当i小于要插入的位置x时,i++,插入p->data------p->next=s->next;s->next=p;(2)删除:当p->data不等于要删除的值x时,p=p->next;q=p->next;p->next=q->next;f
4、ree(q);(3)查找:当p->data!=x时,p=p->next,找到之后返回p->data3)程序源码(提示:列出所编写程序的代码。如果利用图形界面IDE等编程,这里只要求写出关键操作的程序代码。此外,程序一定要有注释说明)1.顺序表的基本操作(用数组实现)#include#includeintmain(){int*a;intN,i,j,e,x;printf("请输入线性表长度N:");scanf("%d",&N);a=(int*)malloc(N*sizeof(int));for(i=0;i5、a[i]=i;printf("初始顺序表为:");for(i=0;i=i-1;j--){a[j+1]=a[j];}a[i-1]=e;for(i=0;i6、[i]);printf("");}elseif(x==1){//删除printf("请输入删除位置i:");scanf("%d",&i);for(i;i7、nclude#include#defineERROR0#defineOK1typedefintstatus;typedefintElemType;typedefstructNode{ElemTypedata;structNode*next;}LNode,*LinkList;voidBuild(LinkListL)//建立一个带头结点的单链表{intn;LinkListp,q;p=L;printf("请输入n:");scanf("%d",&n);printf("请输入n个数据元素:");while(n--){q=(Li8、nkList)mallo
5、a[i]=i;printf("初始顺序表为:");for(i=0;i=i-1;j--){a[j+1]=a[j];}a[i-1]=e;for(i=0;i6、[i]);printf("");}elseif(x==1){//删除printf("请输入删除位置i:");scanf("%d",&i);for(i;i7、nclude#include#defineERROR0#defineOK1typedefintstatus;typedefintElemType;typedefstructNode{ElemTypedata;structNode*next;}LNode,*LinkList;voidBuild(LinkListL)//建立一个带头结点的单链表{intn;LinkListp,q;p=L;printf("请输入n:");scanf("%d",&n);printf("请输入n个数据元素:");while(n--){q=(Li8、nkList)mallo
6、[i]);printf("");}elseif(x==1){//删除printf("请输入删除位置i:");scanf("%d",&i);for(i;i7、nclude#include#defineERROR0#defineOK1typedefintstatus;typedefintElemType;typedefstructNode{ElemTypedata;structNode*next;}LNode,*LinkList;voidBuild(LinkListL)//建立一个带头结点的单链表{intn;LinkListp,q;p=L;printf("请输入n:");scanf("%d",&n);printf("请输入n个数据元素:");while(n--){q=(Li8、nkList)mallo
7、nclude#include#defineERROR0#defineOK1typedefintstatus;typedefintElemType;typedefstructNode{ElemTypedata;structNode*next;}LNode,*LinkList;voidBuild(LinkListL)//建立一个带头结点的单链表{intn;LinkListp,q;p=L;printf("请输入n:");scanf("%d",&n);printf("请输入n个数据元素:");while(n--){q=(Li
8、nkList)mallo
此文档下载收益归作者所有