实验二 线性表(顺序存储)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二线性表(顺序存储)

一、实验目的

1. 了解线性表的逻辑结构特性,以及这种特性在计算机内的两种存储结构。

2. 重点是线性表的基本操作在两种存储结构上的实现;本次实验以顺序存储的操作为侧重点;并进一步学习结构化的程序设计方法。

二、实例

1. 线性表的顺序存储表示(结构)及实现。

阅读下列程序请注意几个问题:

(1)关于线性表的顺序存储结构的本质是:在逻辑上相邻的两个数据元素a i-1, a i,在存储地址中也是相邻的,既地址连续。不同的教材有不同的表示,有的直接采用一维数组,这种方法有些过时。有的采用含‘动态分配’一维数组的结构体,这种方法过于灵活抽象(对读者要求过高)。我们采用的是含‘静态’一维数组和线性表长的结构体:

typedef struct

{ ElemType a[MAXSIZE]; /* 一维数组子域 */

int length; /* 表长度子域 */

}SqList; /* 顺序存储的结构体类型 */

(2)本程序是一个完整的、子函数较多的源程序。目的为学生提供一个示范,提供顺序存储表示的资料,供学生参考。比如,主函数中简单“菜单设计”(do-while循环内嵌套一个 switch结构)技术。在学习数据结构的初级阶段,并不强要求学生一定使用“菜单设计”技术,同学们可以在main()函数中直接写几个简单的调用语句,就象前面的复数处理程序中的main()一样。但是随着学习的深入,尽早学会使用“菜单设计”技术,会明显提高编程和运行效率。

[源程序]

(略)

三、实验题

1. 一个线性表有n个元素(n

提示:

请按照如下顺序实现本题功能:

第一步:创建顺序表,并输出原始数据

第二步:排序,输出排好序的线性表

第三步:输入要插入的元素x

第四步:将x插入已排序的线性表中,使线性表仍然有序

第五步:输出最终结果

要求:

1、70分程序

//事先直接给定有序表

#include

#define MAXSIZE 50

typedef struct

{

int a[MAXSIZE];

int length;

}List;

void main()

{

List L;

int i,j;

int x;

L.length=10;

for(i=0;i<10;i++)

L.a[i]=2*i;

printf("事先给定的有序表为(当前表长为10):\n");

for(i=0;i

printf("%4d",L.a[i]);

printf("\n请输入一个数x");

scanf("%d",&x);

for(i=9;i>=0;i--)

{

if(x

L.a[i+1]=L.a[i];

else

{L.a[i+1]=x;

//printf("%d",L.a[i]);

++L.length;

break;}

}

for(i=0;i

printf("%4d",L.a[i]);

}

2、80分程序:

//事先直接给定有序表,用函数实现数据元素x的插入#include

#define MAXSIZE 50

typedef struct

{

int a[MAXSIZE];

int length;

}List;

void Insert(List *L,int x);

void main()

{

List L;

int i,j;

int x;

L.length=10;

for(i=0;i<10;i++)

L.a[i]=2*i;

printf("事先给定的有序表为(当前表长为10):\n");

for(i=0;i

printf("%4d",L.a[i]);

printf("\n");

//以下程序段请填空完成:现有一元素x要插入到线性表的适当位置上,并保持线性表原有的顺序不变。

printf("请输入要插入的元素x:");

scanf("%d",&x);

Insert(&L,x);

}

//请完成Insert()函数

3、100分程序:

//按步骤完成全部功能,并用函数实现

#include

#define MAXSIZE 50

typedef struct

{

int a[MAXSIZE];

int length;

}List; //请注意该顺序表的结构

void Create(List *L);

void Sort(List *L);

void Display(List L);

void Insert(List *L,int x);

main()

{

int i,x;

List L;

printf("1、创建线性表(初始化和尾部插入)\n");Create(&L);

Display(L);

printf("2、对线性表进行排序\n");Sort(&L);

Display(L);

printf("3、请输入要插入的元素:");scanf("%d",&x);

printf("4、将x插入到有序表中\n");Insert(&L,x);

Display(L);

}

相关文档
最新文档