1.C语言顺序表实验报告

  • 格式:doc
  • 大小:22.00 KB
  • 文档页数:4

下载文档原格式

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

实验报告要求

一、实验目的

二、实验内容

三、程序流程图

实验结果(要求检测所有情况的正确性,写出测试条件及相应的测试结果)

完成思考题

实验一顺序表的基本操作(2学时)

一、实验目的

了解顺序表的逻辑特征,掌握顺序表的描述方法、特点及有关的概念,掌握顺序表上的插入和删除等基本操作算法。

二、实验内容

在顺序表List[]中,实现顺序表的基本操作,包括:初始化顺序表,在表中插入元素、删除元素。

基本要求:

顺序表的元素个数可随意设定;

可连续测试任意多个元素的插入、删除,(插

入、删除位置及要插入元素数值均从键盘输入);

任一操作结束后将顺序表中的内容输出;

可由用户选择退出程序。

三、实验要点及说明

顺序表又称为线性表的顺序存储结构,它是用一组地址连续的存储单元依次存放线性表的各个元素。

可按如下格式定义顺序表:

#define MAXLEN 50 /* 定义顺序表最大元素个数50 */

typedef struct{

datatype List[MAXLEN];/* 定义顺序表List */

int Num; /* 定义顺序表表长*/

}Seqlist;

模块划分:(1)initiq( )函数:初始化顺序表

(2)insertq( )函数:实现插入功能

(3)deleteq( )函数:实现删除功能

(4)print( )函数:实现输出功能

四、参考源程序

#include <>

#define MAXLEN 50

typedef int datatype;

typedef struct{

datatype List[MAXLEN];

int Num;

}Seqlist;

void initiq(Seqlist *la );

int insertq(Seqlist *la,int n);

int deleteq(Seqlist *la,int n);

int print(Seqlist *la);

void main()

{ Seqlist la;

int s,n; /* s 选择输入,n 插入或删除数据的个数*/

printf("请输入你的选择: 1---initiate 2---insert 3---delete 4---print 5---exit\nyour choice =");

scanf("%d",&s);

while(s!=5)

{ if(s==1)

{ initiq( &la );

printf("完成初始化!\n"); }

else if(s==2)

{ printf("请输入待插入的数据个数:");

scanf("%d",&n);

insertq(&la,n);

print(&la); }

else if(s==3)

{ printf("请输入待删除的数据个数:");

scanf("%d",&n);

deleteq(&la,n);

print(&la); }

else if(s==4)

{ print(&la); }

else

printf("你的选择是错误的!\n ");

printf("请输入你的选择: 1---initiate 2---insert 3---delete 4---print 5---exit\nyour choice =");

scanf("%d",&s); } }

/*初始化*/

void initiq(Seqlist *la )

{ la-> Num=0; }

/*插入*/

int insertq(Seqlist *la,int n)

{ int i,j; /* i 插入位置,j 顺序表下标*/

datatype x; /* x 插入数据*/

while(n)

{ if (la->Num>=MAXLEN-1)

{ printf ("\n 表满,不能插入!插入未完成,还有%d个数据未插入\n",n);

return 0; }

printf("请输入插入的位置和数据:");

scanf("%d%d",&i,&x);

if (i<0||i>la->Num)

{ printf ("\n 插入位置不合理!\n"); }

else

{ if (i== la->Num)

la->List[i]=x;

else

{ for ( j=la->Num; j>i; j--)

la->List[j]=la->List[j-1];

la->List[i]=x; }

la->Num++;

n--; } }

printf("插入完成\n");

return 1; }

/*删除*/

int deleteq(Seqlist *la,int n)

{ int i,j; /* i 删除位置,j 顺序表下标*/

while(n)

{ if (la->Num<=0)

{ printf ("\n 表空,不能删除!\n");

return 0; }

printf("请输入删除的位置:");

scanf("%d",&i);

if (i<0||i>=la->Num)

{ printf ("\n 删除位置错误!\n"); }

else

{ for ( j=i+1; jNum; j++)

la->List[j-1]=la->List[j];

la->Num--;

n--; } }

printf("删除完成!\n");

return 1; }

/*显示输出*/

int print (Seqlist *la)

{ int m;

if (la->Num<=0)

{ printf("顺序表为空!\n");

return 0; }

else

{ printf("当前的顺序表为:\n");

for(m=0;mNum;m++)

printf("List[%d]=%d ",m,la->List[m]);

printf("\n表长为%d\n",la->Num);

return 1; } }

五、思考题

1.设顺序表L中的数据元素按递增排列,编写一个算法,将数据元素x插入到顺序表L的适当位置上,以保持顺序表的有序性。

2.设计一算法实现删除顺序表a中第i个元素起的k个元素。

typedef struct