数据结构之顺序表

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;
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值