顺序表的结构体设计:
#define MAXSIZE 10 //顺序表一般固定大小
struct SeqList
{
int data[MAXSIZE];
int capacity; //顺序表容量大小
int cursize; //顺序表中有效数据节点个数
}SeqList , *PSeqList; //结构体指针和结构体别名
按位置删除:
bool Eraser(PSeqList plist, int pos)
{
assert(plist != NULL);
if (pos < 0 || pos > plist->cursize - 1) //这块为什么要写cursize-1呢 下面图片有解释
{
return false;
}
for (int i = pos; i < plist->cursize -1 ; i++) //下图对这个有解释
{
plist->data[i] = plist->data[i + 1];
}
plist->cursize += 1;
return true;
}
下图是对于代码对边界条件处理的一些讲解 这种东西只要把握住了边界条件 还是很简单的 :

尾删: 上面已经给按位置删除函数写出来了 尾删相当于 按照最后一个数据进行删除 这样的话 调用按位置删除函数 提供高代码的复用性
void Eraser_Front(PSeqList plist)
{
assert(plist != NULL);
Eraser(plist , plist->cursize-1);
}
头删:
void Eraser_Back(PSeqList plist)
{
assert(plist != NULL);
Eraser(plist , 0);
}
本文探讨了顺序表的结构设计,重点介绍了如何实现按位置删除功能,包括边界条件的处理,并扩展了尾删和头删操作,提升代码复用性。通过实例讲解了处理顺序表时确保数据完整性和正确性的关键技巧。
540

被折叠的 条评论
为什么被折叠?



