数据结构线性表实验报告

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

相关文档
最新文档