计划更新23王道数据结构所有课后代码习题的实现,虽然考试写的一般都是伪代码,但是强迫症的我还是全部实现了一遍,仓库在这里
代码全部是用 C++ 写的,都可以编译运行,包含暴力解和最优解。
持续更新,目前更新进度:
- 线性表 14/14
- 链表 8/25
- …
仅供参考! 会包含一些考试不让写的语法,可能也会有一些错误。
单链表结构体
#define ElemType int
typedef struct LNode{
ElemType data;
struct LNode* next;
}LNode, *LinkList;
我自己定义的一些方法,便于运行,尽量使用 malloc()
和 free()
进行内存管理(考试要求):
// 创建一个不带头结点的单链表
LinkList createList(vector<int> data) {
if (data.size() == 0) return NULL;
LNode* head = (LinkList)malloc(sizeof(LNode));
head->data = data[0];
head->next = NULL;
LNode* p = head;
for (int i = 1; i < data.size(); i++) {
LNode* q = (LNode*)malloc(sizeof(LNode));
q->data = data[i];
q->next = NULL;
p->next = q;
p = q;
}
return head;
}
// 创建一个带头结点的单链表
LinkList createHeadList(vector<int> data) {
if (data.size() == 0) return NULL;
LNode* head = (LinkList)malloc(sizeof(LNode));
head->next = NULL;
LNode* p = head;
for (int i = 0; i < data.size(); i++) {
LNode* q = (LNode*)malloc(sizeof(LNode));
q->data = data[i];
q->next = NULL;
p->next