顺序表的基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》实验报告一
顺序表的基本操作
班级:网络工程学号: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
#include
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 { 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.对算法的程序的讨论、分析,改进设想,其它经验教训。 输入可以改为以某个结束符为标志,而不是以确定的大小为标志,能提高程序的可扩展性。