little fairy 的第x篇博客。
顺序表和链表都是常见的线性结构。
顺序表和链表最基本的差异为:顺序表,逻辑相邻,物理也相邻(可以直接访问其前驱和后继)。链表,逻辑相邻,物理不相邻(需要通过辅助信息才能访问其前驱和后继)。
顺序表:储存在连续空间中。
(1)结构体//本例为不定长的顺序表。定长的顺序表相当于一个给定长度的数组,储存数据个数有限。
typedef struct
{
int *elem;//指向动态内存的指针
int length;//有效数据个数 //用于判断是否为满表
int listsize;//总单元个数 //若有效数据个数==总单元个数,则表满,若想继续往其中添加数据,则需要对顺序表进行扩容
}DSeqList,*PDSeqList;
2)可以通过下标访问元素,时间复杂度为O(1)。
eg:ps->elem[pos];//ps为传入的参数名(PDSeqList ps),pos为所要访问的位置
3)进行插入和删除操作时,即需要修改已有结构时,需要同时对后续数据进行相应处理。(改变了部分数据的地址)
//判断顺序表是否为满
static bool IsFull(PDSeqList ps)
{