顺序表查找

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

顺序表查找

周次:第4周

一、实验目的

1、掌握线性表中元素的前驱、后续的概念。

2、掌握顺序表与链表的建立、插入元素、删除表中某元素的算法。

3、掌握线性表三种查找的算法。

4、对线性表相应算法的时间复杂度进行分析。

5、理解顺序表数据结构的特点(优缺点)。

二、实验环境

⒈硬件:每个学生需配备计算机一台。

⒉软件:Windows操作系统和VC++6;

三、实验要求

1.将实验中所要求的每个功能用一个函数实现。

2.每个输入前要有输入提示,每个输出数据都要求有内容说明(如:280和100的和是:380。)。

3.函数名称和变量名称等用英文或英文简写(每个单词第一个字母大写)形式说明。

四、实验内容

1.在自己的U盘中建立“姓名+学号”文件夹,并在该文件夹中创建“实验1”文件夹(以后每次实验分别创建对应的文件夹),本次实验的所有程序和数据都要求存储到本文件夹中(以后实验都按照本次要求)。

2.阅读参考下面程序,补充完善程序并运行程序,写出结果:

(1)补充实现在顺序表中的删除功能函数,并在主函数中补充代码验证算法的正确性。(2)补充实现在顺序表中的查找功能函数,并在主函数中补充代码验证算法的正确性。(注意:查找功能实现顺序查找和二分查找)

3.阅读参考书上程序,实现在顺序表中的删除功能和查找功能函数,并写出结果。

(注意:2和3只要完成其中之一即可,完成后可以截图后发我qq邮箱。)

#include "stdafx.h"

#include

#include

#define ERROR 0

#define OK 1

#define INIT_SIZE 5 /*初始分配的顺序表长度*/

#define INCREM 5 /*溢出时,顺序表长度的增量*/

typedef int ElemType; /*定义表元素的类型*/

typedef struct Sqlist{

ElemType *slist; /*存储空间的基地址*/

int length; /*顺序表的当前长度*/

int listsize; /*当前分配的存储空间*/

}Sqlist;

int InitList_sq(Sqlist *L);

int CreateList_sq(Sqlist *L,int n);

int ListInsert_sq(Sqlist *L,int i,ElemType e);

int PrintList_sq(Sqlist *L);

int ListDelete_sq(Sqlist *L,int i);

int ListLocate(Sqlist *L,ElemType e);

//初始化顺序表

int InitList_sq(Sqlist *L){

L->slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType)); if(!L->slist) return ERROR;

L->length=0;

L->listsize=INIT_SIZE;

return OK;

}/*InitList*/

//创建顺序表

int CreateList_sq(Sqlist *L,int n){

ElemType e;

int i;

for(i=0;i

printf("input data %d",i+1);

printf(": ");

scanf("%d",&e);

if(!ListInsert_sq(L,i+1,e))

return ERROR;

}

return OK;

}/*CreateList*/

/*输出顺序表中的元素*/

int PrintList_sq(Sqlist *L){

int i;

for(i=1;i<=L->length;i++)

printf("%5d",L->slist[i-1]);

return OK;

}/*PrintList*/

//在顺序表中插入

int ListInsert_sq(Sqlist *L,int i,ElemType e){

int k;

if(i<1||i>L->length+1)

return ERROR;

if(L->length>=L->listsize){

L->slist=(ElemType*)realloc(L->slist,

(INIT_SIZE+INCREM)*sizeof(ElemType));

if(!L->slist)

return ERROR;

L->listsize+=INCREM;

}

for(k=L->length-1;k>=i-1;k--){

L->slist[k+1]=k;

}

L->slist[i-1]=e;

L->length++;

return OK;

}/*ListInsert*/

/*在顺序表中删除第i个元素*/

int ListDelete_sq(Sqlist *L,int i)

{

}

/*在顺序表中查找指定值元素,返回其序号*/

//int ListLocate(Sqlist *L,ElemType e){

//}

//主函数

int main(){

Sqlist sl;

int n;

printf("please input n:"); /*输入顺序表的元素个数*/

相关文档
最新文档