1、链表,首先注意链表的结构
struct ListNode {
int val;
ListNode* next;
ListNode() : val(0),next(nullptr){}
ListNode(int x ):val(x),next(nullptr){}
ListNode(int x,ListNode* nextt):val(x),next(nextt){}
}
其次是虚拟头结点的使用,遍历链表顺序和保存下一个节点的惯性。
ListNode* pre = new ListNode(0);
反转链表即为反转链表内指针的指向,反转的过程注意是被赋值,而不是赋值。
生成链表这道题有些难,因为还设计到函数的封装,所以这道题有些痛点没有解决。