主要说明Linux内核中单链表操作的关键思想,需要注意的地方
1. 假设
- 为了说明关键思想,对数据结构进行了精简
2. 数据结构定义
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
3. 链表操作
3.1 创建链表
- 关键思想:链表实际上是通过next指针链接起来的,所以只需要控制next指针里存储什么地址,就可以建立节点之间的链接关系
ListNode* create(ListNode* l1) {
ListNode *head = NULL;
ListNode **node = &head; //可以理解为node是一个指向ListNode结构体next指针成员的指针
while(l1! = NULL){
(*node) = new ListNode(l1->val); //next指针存储一个节点地址
node = &((*node)->next); //更新node,让其指向下一个next指针
l1 = l1->next;
}
return head;
}