按位置插入
我们知道 顺序表的特点就是 无论在逻辑上还是地址上都是连续的
先看顺序表的结构体:
#define MAXSIZE 10 //顺序表一般固定大小
struct SeqList
{
int data[MAXSIZE];
int capacity; //顺序表容量大小
int cursize; //顺序表中有效数据节点个数
}SeqList , *PSeqList; //结构体指针和结构体别名
再来看结构体的数据按位置插入:
bool Insert(PSeqList plist , int pos , int val)
{
assert(plist != NULL);
if(pos < 0 || pos > plist -> cursize) //这块为什么要pos > plist -> cursize呢 下图有解释
{
return false;
}
for(int i = plist -> cursize ; i > pos ; i--)
{
plist -> data[i] = plist -> data[i-1];
}
plist -> data[pos] = val;
plist -> cursize += 1; //有效数据域加一
return true;
}
这行代码在我看来是最难理解的
数据结构!