顺序表的基本操作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.对算法的程序的讨论、分析,改进设想,其它经验教训。

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

相关文档
最新文档