【软件基础】课程实验1及参考程序

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

实验1线性表的顺序结构

实验目的和要求

熟悉线性表的基本操作在顺序表上的实现。

实验内容

对已建立的顺序表进行插入和删除的基本操作。

实验步骤及要求

1. 根据实验要求新建文件,取名为sy1.cpp。

2. 根据实验内容加入相应的头文件,保存文件。录入以下代码(可复制粘贴)。

#include

#include

3. 根据实验内容定义下面代表顺序表的结构类型,保存文件。录入以下代码(可复制粘贴)。

#define maxlen 100

struct sqlisttp{

i nt elem[maxlen];

i nt last;

};

4. 根据实验内容继续定义下列函数,保存文件。录入以下代码(可复制粘贴)。

//初始化顺序表

void InitList(sqlisttp *&L)

{

L=(sqlisttp *)malloc(sizeof(sqlisttp));

L->last=0;

}

//输出顺序表

void DispList(sqlisttp *v)

{

i nt i;

i f (v->last==0) return;

f or (i=0;ilast;i++)

printf("%d ",v->elem[i]);

p rintf("\n");

}

1

//顺序表的插入操作

void insert(sqlisttp *&v, int i, int x)

{

i nt k;

i f (i<1|| i>v->last+1)

printf("插入位置不合适!\n" );

e lse i

f (v->last>=maxlen-1)

printf( "线性表已满!\n" );

e lse

{

i--; //将顺序表位序转化为elem下标*/

for( k = v->last; k >= i; k-- )

v->elem[k+1] = v->elem[k];

v->elem[i] = x;

v->last++;

}

}

//顺序表的删除操作

void deletev(sqlisttp *&v, int i)

{

i nt k;

i f (i<1|| i>v->last)

printf("删除位置不合适!\n" );

e lse

{

i--; //将顺序表位序转化为elem下标*/

for( k = i+1; k <= v->last; k++ )

v->elem[k-1] = v->elem[k];

v->last--;

}

}

5. 设计主函数对所有操作进行测试。

(1)在sy1.cpp的末尾输入以下测试函数(可复制粘贴),再保存。

void main()

{

s qlisttp *v;

2

p rintf("(1)初始化顺序表L\n");

I nitList(v);

p rintf("(2)依次采用尾插法插入11,12,13,10,30元素\n");

i nsert(v,1,11);

i nsert(v,2,12);

i nsert(v,3,13);

i nsert(v,4,10);

i nsert(v,5,30);

p rintf("(3)输出顺序表v:");

D ispList(v);

p rintf("(4)在第4个元素位置上插入99元素\n");

i nsert(v,4,99);

p rintf("(5)输出顺序表v:");

D ispList(v);

p rintf("(6)删除v的第3个元素\n");

deletev(v,3);

p rintf("(7)输出顺序表v:");

D ispList(v);

}

(2)编译sy1.cpp,无错后运行sy1,将运行结果截图保存。

实验提交要求

先用学号姓名建立文件夹,然后将sy1.cpp源程序和运行结果截图复制进来,最后打包提交。

***************************************************************************

【参考程序】

/*文件名:sy1.c*/

#include

#include

#define maxlen 100

struct sqlisttp{

int elem[maxlen];

int last;

};

void InitList(sqlisttp *&L)

3

{

L=(sqlisttp *)malloc(sizeof(sqlisttp));

L->last=0;

}

void DispList(sqlisttp *v)

{

int i;

if (v->last==0) return;

for (i=0;ilast;i++)

printf("%d ",v->elem[i]);

printf("\n");

}

void insert(sqlisttp *&v, int i, int x)

{

int k;

if (i<1|| i>v->last+1)

printf("插入位置不合适!\n" );

else if (v->last>=maxlen-1)

printf( "线性表已满!\n" );

else

{

i--; //将顺序表位序转化为elem下标*/

for( k = v->last; k >= i; k-- )

v->elem[k+1] = v->elem[k];

v->elem[i] = x;

v->last++;

}

}

void deletev(sqlisttp *&v, int i)

{

int k;

if (i<1|| i>v->last)

printf("删除位置不合适!\n" );

else

{

i--; //将顺序表位序转化为elem下标*/

4

相关文档
最新文档