目录

C语言之数据结构-顺序表的实现

C语言之数据结构 顺序表的实现

创建顺序表(SeqList)的思路与实现

思路:

头文件先把要用到的结构体和函数等声明

注意:①分清函数是否用void。

②每个函数的()内容。

然后在.c文件中,对函数进行完善

①每次都要先断言

②插入要申请空间,并且不要忘记写插入的数

③删除不要画蛇添足

④最好插入就size++,删除size–

⑤分清循环的关系(最好画图)还有交换位置的关系

注意事项

在编写和练习顺序表(SeqList)相关代码时,确实容易出现各种错误。以下是一些关键步骤和注意事项,可以帮助你更好地理解和实现顺序表:

1. 画图理解关系:

  • 在做题时,一定要多画图。通过图形可以更直观地理解顺序表中元素之间的关系,以及插入、删除操作对顺序表的影响。

2. 检查函数名和语法:

  • 确保函数名拼写正确,并且符合命名规范。

  • 注意函数的参数类型和返回类型是否正确。

  • 不要忘记在函数定义末尾加上分号(;)。

3. 位置关系和边界条件:

  • 在实现插入和删除操作时,要特别注意位置关系和边界条件。例如,插入操作时要确保新元素插入到正确的位置,删除操作时要确保删除的元素是存在的。

4. 复制粘贴问题:

  • 在复制粘贴代码时,要小心不要引入不必要的错误或遗漏重要的部分。

5.头文件和类型定义:

  • 在头文件内定义所需的数据类型和结构体。例如:
typedef int SLDataType;//不要丢了";"
typedef struct SeqList
{
	SLDataType* arr;
	int size;
	int capacity;
}SL;

6. 函数声明和定义:

  • 声明并定义你需要用到的函数。例如:
//尾插
void SLPushBack(SL* ps,SLDataType x);
//头插
void SLPushFront(SL* ps, SLDataType x);
void SLPritnt(SL s);

//尾删
void SLPopBack(SL* ps);
//头删
void SLPopFront(SL* ps);

//间插
void SLInsert(SL* ps, int pos, SLDataType x);
//间删
void SLErase(SL* ps, int pos);

//查找
int SLFind(SL* ps, SLDataType x);

7. 实现细节:

  • 在实现每个函数时,要注意以下几点:

  • 初始化:确保在使用顺序表之前进行初始化。

  • 断言:使用assert来检查指针是否为空,以及其他边界条件。

  • 内存管理:在插入操作中,如果顺序表已满,需要重新分配更大的内存空间。

  • 插入和删除:根据位置关系正确地移动元素,并在插入后增加size,在删除后减少size

8. 测试:

  • 编写测试用例来验证你的实现是否正确。例如:
void SLTest01()
{
	SL sl;
	SLInit(&sl);

	SLPrint(sl);
	SLDestroy(&sl);
}
int main()
{
	//SLTest02();
	SLTest01();
	return 0;
}

要分清传参传的什么

9. 注意事项:

  • ps->arr等价于if (ps->arr != NULL),但在实际代码中通常不需要这样写,因为assert已经帮你检查了这一点。

  • typedef#define的区别:typedef用于定义新的类型,而#define用于定义宏。两者的使用方式和目的不同。

通过遵循以上步骤和注意事项,你可以更有效地创建和实现顺序表,并减少错误的发生。希望这些信息对你有所帮助!