洛阳理工学院数据结构实验报告

更新时间:2024-07-08 03:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

洛阳理工学院实验报告

系部 计算机与信息班级 工程系 课程名称 实验名称 数据结构 实验1:顺序表的基本操作 实验日期 2014.3.5 成绩 学号 姓名 实验目的: 掌握线性表的基本操作:插入、删除、查找在顺序存储结构上的实现。 实验条件: 电脑一台,VC++6.0 实验内容与步骤: 内容:建立一有序的顺序表,并实现下列操作: 1. 把元素x插入表中并保持有序; 2.查找值为x的元素,若找到将其删除; 3.输出表中各元素的值。 步骤: 1、先将插入的元素与最后一个元素比较,若小,将最后一个元素向后移动一个位置。继续与次位比较,若还小,继续移动。直到比它大时,不在移动,然后将要插入的元素插入,最后再让表长加一。 2、调用查找函数找出所删除元素的下表,并返回其值:先从第一个元素开始找,如果找到了,返回下标值;如果到表的结尾还没有找到就返回-1。 3、对于找到所删除元素,就从该元素开始,每一元素都往前移动,然后让表长减一。 4、调用输出函数,输出表中各元素的值时,将其封装成一个函数。传入该函数中的参数是一个指向该顺序表的指针。 运行结果: 实验总结: 通过此次的实验使我基本掌握了顺序表的函数的输入输出、查找、插入和删除等顺序表的基本操作,还有加深对函数之间的调用,对选择语句的加深。 在学习数据结构时一定有多上计实践,才能更好的发现错误,才能让我们注意到更多的细节之处,更能加深我们对课本知识的掌握。 附:源程序: #include #include

#define MAXSIZE 50 //此处宏定义数组最大长度 #define OK 1 #define ERROR 0 typedef struct {

int elem[MAXSIZE];//线性表占用数组空间 int last;

//记录现性表中最后一个元素的下表

}SeqList;

/*******************************************/ //

顺序表按内容查找函数

//功能:在顺序表L中查找与e相等的元素 /********************************************/ int Locate(SeqList *L,int e) {

int i=0; //i为扫描计数器

while((i<=L->last)&&(L->elem[i]!=e)) //顺序扫描表,直到找到职位e的元素,或扫

面到表尾没有找到 }

/*********************************************************/ /****************输入函数*********************************/ /*********************************************************/ void Input(SeqList* L) { int n,j;

printf(\输入数组长度n:\ scanf(\

printf(\输入数组元素\\n\ for(j=0;j

scanf(\L->last=n-1;

i++;

if(i<=L->last)

return(i+1); //若找到值为e的元素,返回i+1

else

return(-1); //若没找到,返回空序列号

/*********************************************************/ /****************输出函数*********************************/ /*********************************************************/ void Output(SeqList* L) {

int i;

for(i=0;i<=L->last;i++) }

/****************************************************/ //

顺序表的插入函数

printf(\

printf(\

//功能:在顺序表L中插入一个元素e。i的合法位子为1~L->last+2 /***************************************************/ int InList(SeqList* L,int e) { int i; }

/*************************************************/

if(L->last==MAXSIZE-1) { }

for(i=L->last;i>=0&&eelem[i];i--)

L->elem[i+1]=L->elem[i]; printf(\溢出\\n\return(ERROR);

L->elem[i+1]=e;

L->last++;

return(OK);

// 顺序表的删除函数

//功能:在顺序表L中删除第i个元素,1<=i<=L->last+1 /************************************************/ void DelList(SeqList* L,int i) { }

/*******************************************************/ //*****************主函数*******************************/ /*******************************************************/ void main() {

int b,e,e1,e2,chiose;

printf(\选择1函数输入*********************\\n\ printf(\选择2函数插入*********************\\n\ printf(\选择3函数删除*********************\\n\

printf(\选择4函数输出*********************\\n\int a=1; SeqList *L,p; L=&p; }

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

L->elem[k-1]=L->elem[k]; //将后面的元素次前移 int k;

if((i<1)||(i>L->last+1)) {

printf(\删除位置不合法\

L->last--;

printf(\选择5函数退出*********************\\n\

while(a) {

printf(\选择方式chiose:\

scanf(\

switch(chiose) {

case 1: Input(L);

printf(\

printf(\输出所输入的元素,用作对比\\n\

case 3:

printf(\输入删除元素e2:\scanf(\e2=e;

b=Locate(L, e2); DelList(L,b); Output(L);

case 2:

printf(\输入插入元素e1:\scanf(\e1=e;

InList(L,e1);// 调用删除函数 Output(L); printf(\break;

Output(L); printf(\break;

printf(\

break;

printf(\输出所有元素\\n\

case 4:

Output(L); printf(\break; a=0; printf(\break;

case 5:

default : printf(\输入有误,请重新输入\\n\

}

} }

printf(\ break;

本文来源:https://www.bwwdw.com/article/hqh.html

Top