&&逻辑与 ||逻辑或
线性表是最基本、最简单、也是最常用的一种数据结构。
线性表结构中,数据元素之间通过一对一首位相接的方式连接起来。
具体实现时,线性表可
以采用不同的存储策略。
该方案将线性表存储在一片连续的空间里,通过data,len , 和max三个属性元素。
组织成为了一个结构:
- data: 给出线性存储空间的起始地址;
- max : 指明线性表存储空间最
- len : 当前线性表里的数据元素个数。
为了讨论简化,我们假设每个数据元素是一个整数:
该线性表的结构定义如下:
struct SeqList{
T* data; //数据元素存储空间的开始地址
int len; //线性表的当前长度
int max; //线性表的最大长度
};
以上示意图中的slist是指向给结构的一个指针,只要给定slist指针,就可对线性表就行操作。
对数据元素进行操作处理是一个数据结构的重要组成部分。线性表涉及的主要操作如下:
SeqList*SL_Create(int max)
- 释放线性表存储空间: 释放slist->data 指向的用于存储线性表数据元素的存储空间。该操作函数具体定义如下:
void SL_Free(SeqList*slist)
- 置空线性表:将当前线性表变为一个空表,实现方法是将slist->len 设置为0。该操作函数具体定义如下:
void SL_MakeEmpty(SeqList*slist)
- 获取线性表当前长度:获取并返回线性表的当前长度slist->len。该操作函数具体定义如下:
int SL_Length(SeqList*slist)
- 判断线性表是否为空:若当前线性表是空表,则返回false,否则返回true.该操作函数具体定义如下:
BOOL SL_IsEmpty(SeqList*slist)
- 判断线性表是否已满:若线性表达到最大长度,则返回true,否则返回false。该操作函数具体定义如下:
BOOL SL_IsFull(SeqList*slist)
- 返回线性表第 i 个数据元素: 返回线性表的第 i 个数据元素 slist ->data[i] 。 该操作函数具体定义如下:
T SL_GetAt(SeqList* slist , int i)
- 修改线性表第 i 个数据元素: 将线性表的第 i 个数据元素的值修改为 x 。 该操作函数具体定义如下:
void SL_SetAt(SeqList*slist, int i , T x)
- 在线性表位置 i 插入数据元素 x : 将x 插入slist->data[i] 之前。若插入失败(i>slist-len 或 i <0时, 无法插入),返回false , 否则返回true。 该操作函数具体定义如下:
BOOL SL_InsAt(SeqList*slist , int i , T x)
- 删除线性表位置 i 处 的数据元素: 删除线性表的 i 号数据元素。输入参数 i 范围应在 [0,slist ->