1、顺序表的定义
#define MAXLEN 100 //定义MAXLEN
typedef int DataType;
typedef struct
{
DataType data[MAXLEN];
int Length;
}SeqList;
定义MAXLEN为100,表示顺序表最大的存储空间
利用typedef将DataType定义成int类型的数据
顺序表SeqList是一个结构体类型,它有两个成员组成,data表示存储顺序表的数组,其长度MAXLEN表示顺序表中元素数目的最大值,Length表示顺序表的实际长度
2、顺序表的初始化
顺序表的初始化就是建立一个空表,有:
void InitList(SeqList* L)
{
L->Length = 0;
}
其中,Initlist的意思是建立一个空的线性表
对于初始化好的顺序表,我们输入n个数,将这些数存在顺序表中,修改表场后建立顺序表L
void CreateList(SeqList* L,int n)
{
int i = 0;
for (i = 0; i < n; i++)
{
scanf("%d", &L->data[i]);
}
L->Length = i;
}
3、查找操作
1. 按位置查找
按位置查找就是查找第i个位置的元素的值,在i无效时返回出错,有效时返回成功,并用指针x所指的变量传回第i个元素的值
int GetElem(SeqList* L, int i, DataType* x)
{
if (i<1 || i>L->Length)
{
return 0;
}
else
{
*x = L->data[i - 1];
return 1;
}
}
注意i的值要合法,所以有一个检查语句
2.按值查找操作
首先令i等于0,然后从表的第一个位置开始逐个与给定值x进行判断,当i小于表长且与该位置的元素值与x的值不相等时i自加,直到循环结束为止。若i的值大于表长就是查找失败,就返回0;若查找成功就返回其位置,就是i+1(数组下标从0开始所以要加1)
int Locate(SeqList* L, DataType x)
{
int i = 0;
while (i < L->Length && L->data[i] != x)
{
i++;
}
if (i > L->Length)
{
return 0;
}
else
{
return i + 1;
}
}