1. 理解C语言是如何构造出链表的
建立链表分为两步:
- 初始化各个节点对象
- 构建引用指向关系
完成后,即可以从链表的头节点出发,通过指针next
依次访问所有节点。
链表的定义(c语言):
struct ListNode {
int val; // 代表数据
struct ListNode* next; // 代表指针
}
创建一个值为 1 2 3 4 的链表,可以这么做:
C语言
struct ListNode* initLink() {
// 1. 创建头指针
struct ListNode* p = NULL;
// 2. 创建头结点
struct ListNode* temp = (struct ListNode *)malloc(sizeof(struct ListNode));
temp->val = 0;
temp->next = NULL;
p = temp;
// 3. 每创建一个结点,都令其直接前驱结点的指针指向它
for (i = 1; i < 5; i++) {
// 创建一个结点
struct ListNode* a = (struct ListNode*)malloc(sizeof(struct ListNode));
a->val = i;
a->next = NULL;
// 每次temp指向的结点就是a的直接前驱结点
temp->next = a;
// temp指向下一个结点(也就是a),为下次添加结点做准备
temp = temp->next;
}
return p;
}