当前位置:文档之家› 顺序表的基本操作

顺序表的基本操作

《数据结构》实验报告一
顺序表的基本操作
班级:网络工程学号:12015242183
实验日期:2016.9.25 姓名:邓宗永
程序文件名及说明:sequenlist 顺序表
一、实验目的
1、掌握使用Turbo C3.0上机调试线性表的基本方法;
2、掌握顺序表的基本操作:插入、删除、查找以及线性表合并等运算。

二、实验要求
1、认真阅读和掌握实验的程序。

2、上机运行程序。

3、保存和打印出程序的运行结果,并结合程序进行分析。

4、按照你对线性表的操作需要,编写写主程序并运行,打印出文件清单和运行结果
三、注意事项:
在磁盘上创建一个目录,专门用于存储数据结构实验的程序。

四、实验内容
1.顺序表的查找、插入与删除。

设计算法,实现线性结构上的顺序表的产生以及元素的查找、插入与删除。

具体实现要求:
(1)从键盘输入10个整数,产生顺序表,并输入结点值。

(2)从键盘输入1个整数,在顺序表中查找该结点的位置。

若找到,输出结点的位置;若找不到,则显示“找不到”。

(3)从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x 插入在对应位置上,输出顺序表所有结点值,观察输出结果。

(4)从键盘输入1个整数,表示欲删除结点的位置,输出顺序表所有结点值,观察输出结果。

五、实验报告必须写明内容
1.程序设计的基本思想,原理和算法描述:(包括程序的结构,数据结构,输入/输出设
计,符号名说明等)
程序的结构:通过子函数实现输出,删除,插入,查找等功能,高耦合低内聚
数据结构:线性结构,顺序储存
输入/输出设计:根据屏幕提示,从键盘读取数据
2.源程序及注释:
#include <stdio.h>
#include <stdio.h>
typedef int datatype;
#define maxsize 10
typedef struct //创建一个顺序表包含10个整数
datatype data[maxsize];
int last;
}sequenlist;
void Delete(sequenlist *L,int i)//删除前移节点{int j;
if((i<1)||(i>L->last+1))
{printf("error");}
else
{for(j=i;j<=L->last;j++)
L->data[j-1]=L->data[j];
L->last--;
}
}
int get(sequenlist L,datatype x)
{ int i=0;
for(i=0;i<=st;i++)
{
if(L.data[i]==x)
{return i+1; break;}
}
return 0;
}
int Insert (sequenlist *L,datatype x,int i)
{
int j;
if((L->last)>=maxsize-1)
{
printf("overflow\n");
return 0;
}
else
{
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last=L->last+1;
return(1);
}
void PPrint(sequenlist L)//输出
{int i;
printf("the list is \n:");
for(i=0;i<= st;i++)
{
printf("%d ",L.data[i]);
}
printf("\n");
}
int main(void)
{
sequenlist L;datatype t,th,mh,wh,eh;
int i,s;
printf("请输入十个整数:\n");
for(i=0 ;i<maxsize;i++)
{
scanf("%d",&(L.data[i]));
if(L.data[i]=='$') break;
}
st=i-1;
printf("\n");
PPrint(L);
printf("\n");
printf("请输入要查找的数:\n");
scanf("%d",&th);
s=get(L,th);
printf("第%d节点\n",s);
printf("请输入要删除的位置:\n");
scanf("%d",&eh);
Delete(&L,eh);
PPrint(L);
printf("请输入要插入的数和位置:数值,位置\n");
scanf("%d,%d",&mh,&wh);
Insert(&L,mh,wh);
PPrint(L);
return 1;
}
3.运行输出结果:
4.调试和运行程序过程中产生的问题及采取的措施:
正常输入插入后,顺序表没有改变,通过调试发现,子函数里的顺序表的变化没有传递给主函数,最后将子函数参数改为指针类型。

5.对算法的程序的讨论、分析,改进设想,其它经验教训。

输入可以改为以某个结束符为标志,而不是以确定的大小为标志,能提高程序的可扩展性。

相关主题