这次边做题边写。
定义链表的节点写法:
struct ListNode {
int val; // 节点上存储的元素
ListNode *next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数
};
203移除链表元素:
方法一:先判断是否删除头节点,之后遍历链表,注意头节点要用while持续删除。因为头节点之前没有节点,所以难以删除。
方法二:创建虚拟头节点,统一删除规则。创建虚拟头节点代码:
ListNode* dummyhead= new ListNode(0);
dummyhead->next=head;
还需要注意C++中释放内存的写法。
707设计链表:理解链表的运作逻辑不难,难的是写代码时添加对于输入的判断。一写全是问题,还需要通过debug找问题出在哪里。晚点重新写一边代码。还有就是class的基础语法问题(又是渣基础导致的问题。)
206反转列表: 理解了双指针法后,写起来意外的简单。需要搞懂逻辑。能理解递归的代码,但是自己写写不出来。明天再消化吧。
花了超过3小时,还是没完全消化。明天还需要重新debug设计链表的代码找一下问题。