- 74
- 0
- 约4.05千字
- 约 11页
- 2021-08-20 发布于江苏
- 举报
2021年数据结构实验报告顺序表和链表
2021年数据结构实验报告顺序表和链表
PAGE / NUMPAGES
2021年数据结构实验报告顺序表和链表
实 验 报 告
课程名称 数据结构
试验项目 试验一 线性表生成与操作
题目一 次序表和链表创建与基础操作
系 别___ _计算机学院 _ ______
专 业__ __计算机大类_ __
班级/学号__(1406/011288)_____
学生姓名 _______(孙文学)_________
试验日期 _(10月19日)
成 绩 _______________________
指导老师 黄改娟
试验题目: 试验一 线性表生成与操作
次序表和链表创建与基础操作(自己所选择试验题目, 必填)
试验目
掌握线性表次序存放和链式存放结构;
验证次序表及链表基础操作实现; (验证)
了解算法与程序关系, 能够将算法转换为对应程序;
体会线性表在实际应用中能够处理问题。(设计、 综合)
试验内容
依据试验一题目列表, 选定题目, 说明题目关键需求;
结合所选定题目, 定义存放结构, 并完成对应应用线性表创建、 插入、 删除、 查找等基础操作算法描述;
程序编码实现, 并取得运行结果。
汇报内容
试验题目及关键存放结构定义
(提醒: 请依据所选定题目, 描述存放结构)
题目: 次序表和链表创建及基础操作
次序表我是采取数组存放, 链表是采取结构体存放
结合题目, 说明对对应线性表基础操作算法描述
(提醒: 可用自然语言、 步骤图、 伪代码等均可, 要求对每一个操作, 都给出具体算法描述)
基础操作:
#次序表#
插入: 在线性表中x位置插入y将x位置及以后元素都往后挪一位, 将y值赋给a[x].
删除: 删除位置为x元素另y=a[x],然后x以后元素都往前挪一位。
查找: 寻求值为y元素从a[0]开始, 若a[i]==y, 则返回i, 不然i++。
#链表#
插入: 当i小于要插入位置x时, i++, 插入p-datap-next=s-next;s-next=p;
删除: 当p-data不等于要删除值x时, p=p-next;
q=p-next;
p-next=q-next;
free(q);
(3)查找: 当p-data!=x时, p=p-next, 找到以后返回p-data
程序源码
(提醒: 列出所编写程序代码。假如利用图形界面IDE等编程, 这里只要求写出关键操作程序代码。另外, 程序一定要有注释说明)
次序表基础操作(用数组实现)
#includestdlib.h
#includestdio.h
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++) //初始化
a[i]=i;
printf(初始次序表为: );
for(i=0;iN;i++)
printf(%d ,a[i]);
printf(\n);
printf(插入请输0, 删除请输1, 查找输入2: );
scanf(%d,x);
if(x==0){
printf(请输入插入位置i和数e: );//插入
scanf(%d%d,i,e);
a=(int *)realloc(a,(N+1)*sizeof(int));
for(j=N-1;j=i-1;j--)
{
a[j+1]=a[j];
}
a[i-1]=e;
for(i=0;iN+1;i++)
printf(%d ,a[i]);
printf(\n);
}
else if(x==1){ //删除
printf(请输入删除位置i:);
scanf(%d,i);
for(i;iN;i++)
a[i-1]=a[i];
for(i=0;iN-1;i++)
printf(%d ,a[i]);
printf(\n);
}
else if(x==2){ //查找
printf(请输入查找位置i:);
scanf(%d,i);
e=a[i-1];
printf(%d\n,e);
}
else {
printf(输入错误! );
}
free(a);
a=NULL;
return 0;
}
单链表基础操作
#includestdio.h
#includestdlib.h
#define ERROR 0
#define OK 1
typedef int status;
typedef int ElemType;
typedef s
原创力文档

文档评论(0)