数据结构线性表实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
、实验目的
掌握线性表的基本操作:建表、插入、删除、输出等运算在顺序存储结构和链式存储结 构上的实现;
熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现。
二、实验环境
装有VisualC++6.0的普通PC 机
三、源程序
#in clude"stri ng.h" #in elude "stdio.h"
#in elude "stdlib.h" #in clude "con io.h"
#define MaxLine 100 /*顺序存储的最大个数 */ typ edef int ElemT ype; typ edef struct SqList {
ElemType data[MaxLine];/* 存放顺序表的数组 */ int length;/*顺
序表的长度*/
} L;
/*初始化顺序表*/ void In itList(SqList&L) {
L.le ngth = 0; //L.len gth =0; }
/*得到顺序表的长度*/ int GetLe ngth(SqList &L) {
return L.le ngth; }
/*得到顺序表中的第i 个元素*/ ElemT ype GetElem(SqList & L,i nt i) {
if(i < 1 II i > L.le ngth)
实验一线性表
3.
通过本次实习加深对高级语言 C 语言的使用(特别是函数参数、指针类型、
链表的使用)。
1.
掌握实现线性表的基本操作方法;
2.
{
prin tf("error"); exit(1);
} return L.data[i-1]; } void List In sert(SqList &L,i nt i,ElemT ype x) /*添加线性表中第i 个位置上的元素,i 从1开始*/ { int j; if(i < 1 || i > L.length+1) /* 检查添加位置的合法性 */
{
prin tf("error"); exit(1); }
if(L.le ngth >= MaxLi ne) {
prin tf("overflow!"); exit(1); }
j = L.len gth;
while(j>=i)/*此处语句相对参考语句有较大改变 {
L.data[j]=L.data[j-1];
j--; */
} L.data[i-1] = x; L 」en gth++; } void ListDelete(SqList & L,i nt i) /* { int j; if(i<1 II i>L.le ngth)
{
printf ("不存在第i 个元素"); exit(0); }
for(j=i;j<=L.le ngth-1;j++)
删除线性表中第i 个位置上的元素 */
/*检查空表及删除位置的合法性
*/
L.data[j-1]=L.data[j]; /* 向前移动元素*/ L.len gth--;
}
int mai n()
{
FILE *fp;
struct SqList A;
InitList(A);/*初始化顺序表*/
int Judge2=0;
printf(”***线性表操作实验***\n
入0对长度为8的线性表输入数据或者其他任意数进行其他操作sca nf("%d",&Judge2);
if(Judge2==0)
{
int t = 1,d=1;
for(t=1;t<=8;t++)/*此处为顺序表首先输入8个元素*/ {
printf(”请输入第%d个线性表元素:",t);
scan f("%d", &d);
ListI nsert(A,t,d);
}
} A_A\n");
\n\n请输
int Judge=O;
printf(”输入0结束程序或者输入其他任意数继续对该表进行操作
sca nf("%d",&Judge);
A_A\n");
while(Judge)/*判断是结束程序还是要继续操作该顺序表
{
int a=0;
int po s=0;
int c=0;
int Judge1=0;
int P;
/*给出顺序表操作选择菜单分别为输入,删除,显示长度,打印顺序表
printf(" ***************\n
入*\n");
printf(”printf(”printf(”prin tf(" *输入2进行删除
*输入3显示长度
*输入4打印该表
*输入5保存数据
*\n");
*\n");
*\n");
*\n");
*/
*/
*输入1进行插
printf(”
printf(”
***************\n"); *输入6进行排序*\n");
*输入7查找数据*\n
printf(”请选择:");/*选择要进行的操作*/ sca
nf("%d",&P);
if(P==0)
return 0;
else if(P>=1&&P<=7)
switch( P)
{
case 1:
printf("请输入想进行插入操作的位置:");/*选择待插入位置*/
scan f("%d",&p os);
int PP;
printf("请输入待插入的元素:\n");/*输入要插入的元素*/
sca nf("%d",&PP);
ListI nsert(A, pos, PP);
c=GetLe ngth(A);
printf("该线性表的长度为:%d!\n",c);
/*此处选择是重新选择操作还是按顺序进行下一项操作*/
printf("请输入0结束操作或者其他任意数继续其他操作“n");
scan f("%d",&Judge1);
if(Judge1==1)
con ti nue;
else break;
case 2:
printf("输入要删除元素的位置:");/*选择要删除的元素位置*/
scan f("%d",&a);
ListDelete(A,a);
c=GetLe ngth(A);
printf("该线性表的长度为:%d!\n",c);
/*此处选择是重新选择操作还是按顺序进行下一项操作*/
printf(”请输入0结束操作或者其他任意数继续进行其他操作A_A\n");
scan f("%d",&Judge1);
if(Judge1==1)