数据结构实验3-顺序表的查找实验

数据结构实验3-顺序表的查找实验
数据结构实验3-顺序表的查找实验

一,实验题目

顺序表的查找实验。

设顺序表中的关键字是递增有序的,将监视哨设在高下标端设计算法实现简单顺序查找。二,问题分析

本程序要求在递增有序的顺序表中查找某一元素,且要求将监视哨设置在高下标端。程序所能实现的是建立一个递增有序的顺序表,并能查找某一元素在顺序表中的位置。完成这些功能需要解决的关键问题是建立有序的顺序表,输入待查找的元素x,将x设为监视哨,并设置在顺序表的高下标端,最后输出x是否在顺序表中的信息,若在,则输出x在顺序表中的位置,若不在,则输出没有找到与x相同的元素。

(1)数据的输入形式和输入值得范围:顺序表的元素都为递增有序的整型元素。输入待查找的x的值也为整型,查找结束后若找到,现实x在顺序表中的位置。

(2)结果的输出形式:根据操作提示,先输入顺序表的元素个数i,在再输入i个递增有序的顺序表元素,之后输入待查找的元素x。输入完毕后,若查找到x,则输出x在顺序表中的位置,若未找到,则输出没有找到与x相同的元素。

(3)测设数据:

I),顺序表长度i:6,顺序表元素:-34 -23 -21 -4 -1 56 x:-23

有正有负,能查找到

II),顺序表长度i:5,顺序表元素:45 67 69 78 98 x:69

均为正数,能查找到

III),顺序表长度i:6,顺序表元素:-34 -3 4 56 78 79 x:45

有正有负,未能查找到

三,概要设计

(1)为了实现上述功能,需要:

I)建立一个递增有序的顺序表L

II)输入待查找的元素x,并将x设置为高下标端的监视哨。

III)在顺序表中查找x元素是否存在,若不存在,则输出没有找到与x相同的元素。若存在,则输出x在顺序表中的位置。

(2)本程序包含3个函数

I)主函数:main()

II)顺序表输入函数:recordlist *sqlset()

III)在顺序表L中查找元素x 函数:int seqsearch()

个函数间关系如下:

#include "stdio.h"

#include "malloc.h"

#define list_size 50

typedef struct{

int r[list_size+1];

int length;

}recordlist;

recordlist *sqlset() //顺序表输入函数

{

recordlist *L;

int i;

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

L->length=-1;

printf("请输入顺序表的长度i(i

scanf("%d",&i); //输入表长

printf("请输入%d个递增有序的顺序表元素:",i);

if(i>0){

for(L->length=0;L->lengthlength++)

scanf("%d",&L->r[L->length]);

}

return (L);

}

int seqsearch(recordlist *L,int x,int m){ //在长度为m的顺序表L中查找元素x int i=0,position=-1; //position用于记录查找到的位置

L->r[m]=x; //将监视哨设置在高下标端

while(m!=i){

if(L->r[i]==x){

position=i+1; //找到与x相同的元素时将x的位置给position

break;

}

i++;

}

return position; //返回所找到的与x相同的元素的位置

}

main(){

int k,x; //k为要查找元素x在顺寻表中的位置

recordlist *A; //定义一个recordlist型指针变量A

A=sqlset();

printf("请输入待查找的元素x:");

scanf("%d",&x);

k=seqsearch(A,x,A->length); //将查找到的x的位置赋值给k if(k==-1)

printf("没有找到与%d相同的元素!",x);

else

printf("k=%d,查找成功!",k);

}

相关主题
相关文档
最新文档