顺序表的定义代码
下面一段代码的图解
定义了一个顺序表,在内存中的状态:(数组下标由0开始)
下标0 | 下标1 | 下标2 | 下标3 | 。。4 | 。。5 | 。。6 | 。。7 | 。。8 | 。。9 | 。。10 | ... | ... | ... | 。。95 | 。。96 | 。。97 | 下标98 | 下标99 | length |
//静态定义顺序表
#define Maxsize 100;
typedef struct
{
int data[Maxsize]; //int型的数组,Maxsize=100,数组能存储100个整型变量,已经确定
int length; //实际上已使用的长度
}SqList;
SqList L;
L.length=0; //使用点运算获取内容
L.data[0]=1;
L.length=L.length+1;
SqList *L;
L->length=0;
//动态定义
typedef struct
{
int *data;
int Maxsize,length;
}SeqList;
SeqList L;
L.data=(int*)malloc(sizeof(int)*100);
L.Maxsize=100;
L.length=0; //初始化
对顺序表L进行遍历并输出每个数据元素的数据值
顺序表L
5 | 3 | 2 | 1 | 空 | 空 | 空 | 空 | 空 | 空 | 空 | 长度4 |
void Listvisit(SqList L) //Listvisit是函数名字,取什么都可以
{
for(int k=0;k<L.length;k++)
{
printf("%d",L.data[k]);
}
}
顺序表L,其存储的所有数据元素均为不重复的正数,查找L中值为e的数据元素,若找到则返回其下标,找不到则返回-1
int Search_e(SqList L, int e)
{
for(int k=0,k<L.length;k++)
{
if(L.data[k]==e)
{return k;}
}
return -1;
}