顺序表的操作实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
顺序表的基本操作
一、实验目的
1、复习C++语言程序设计中的知识。
2、熟悉线性表的逻辑结构。
3、熟悉线性表的基本运算在两种存储结构上的实现。
4、掌握顺序表的存储结构形式及其描述和基本运算的实现。
5、熟练掌握动态链表结构及有关算法的设计
二、实验内容
实现顺序表的建立、取元素、修改元素、插入、删除等顺序表的基本操作。
[基本要求]
(1).依次从键盘读入数据,建立带头结点的顺序表;
(2).输出顺序表中的数据元素
(3).根据指定条件能够取元素和修改元素;
(4).实现在指定位置插入和删除元素的功能。
三、实验步骤、调试及输出结果
(—) . 数据结构与核心算法的设计描述:
#include
#include
/*顺序表的定义:*/
#define ListSize 100
typedef struct
{int elem[ListSize]; /*向量elem用于存放表结点*/
int length; /*当前的表长度*/
}SeqList;
/*顺序表的建立:*/
void CreateList(SeqList *L,int n)
{int i;
printf("please input n numbers:\n");
for(i=1;i<=n;i++)
scanf("%d",&L->elem[i]);
L->length=n;
}
/*顺序表的打印:*/
void PrintList(SeqList *L,int n)
{int i;
printf("the sqlist is\n");
for(i=1;i<=n;i++)
printf("%d ",L->elem[i]);
printf("\n");
}
/*顺序表的查找:*/
int LocateList(SeqList *L,int x)
{int i;
i=1;
while (((L->elem[i])!=x) &&(i<=10)) ++i;
if ((L->elem[i])==x) return(i);
else return(0);
}
/*顺序表的插入:*/
void InsertList(SeqList *L,int x,int i) {int j;
if (i<1 ||i>L->length+1)
printf("no insert position!\n"); else
{for(j=L->length;j>=i;j--)
L->elem[j+1]=L->elem[j];
L->elem[i]=x;
L->length++;
}
}
/*顺序表的删除:*/
void DeleteList(SeqList *L,int i)
{int j;
if (i<1 ||i>L->length)
printf("no delete position!\n");
else
{for(j=i;j<=(L->length)-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;
}
}
void main()
{
SeqList L;
int i,x;
int n=10; /*当前顺序表的长度*/
L.length=0;
CreateList(&L,n); /*建立顺序表*/
PrintList(&L,L.length); /*输出顺序表*/ printf("input the research element:");
scanf("%d",&x);
i=LocateList(&L,x); /*顺序表查找*/
printf("the research position is %d\n",i);
printf("input the position of insert:");
scanf("%d",&i);
printf("input the value of insert:");
scanf("%d",&x);
InsertList(&L,x,i); /*顺序表插入*/
PrintList(&L,L.length); /*输出顺序表*/ printf("input the position of delete:");
scanf("%d",&i);
DeleteList(&L,i); /*顺序表删除*/
PrintList(&L,L.length); /*输出顺序表*/ }
(二). 调试及输出结果
测试数据:1、输入n个数;2、输出顺序列表;3、顺序表的查找;4.顺序表的插入;5、顺序表的删除;
数据测试如下截图:
四、实验讨论与总结:
通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C++语言,将各种操作描述出来构成算法。
在这次设计的过程中,我知道了顺序表是按顺序存储的,用了一维数组来存储,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。
单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数……通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。