当前位置:文档之家› 顺序表查找

顺序表查找

顺序表查找
周次:第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<stdio.h>
#include<malloc.h>
#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<n;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:"); /*输入顺序表的元素个数*/
scanf("%d",&n);
if(n>0){
printf("\n1-Create Sqlist:\n"); InitList_sq(&sl);
CreateList_sq(&sl,n);
printf("\n2-Print Sqlist:\n"); PrintList_sq(&sl);
}else
printf("ERROR");
return 0;
}。

相关主题