链表
刷题或者学习整理的代码,与完整篇的代码区分
never give-up
代码从入门到放弃
展开
-
6_链表的中间结点
简单 这道题用快慢指针代码量最小(用自己的方法也能AC) b->next!=nullptr 这句代码要理解为什么要这么写,能学到东西 class Solution { public: ListNode* middleNode(ListNode* head) { ListNode *a=head; ListNode *b=head; while(a!=nullptr&&b->next!=nullptr){原创 2020-11-20 19:40:31 · 119 阅读 · 0 评论 -
5_反转链表
简单 这题用双指针,然后核心代码的理解方式如下: 刚开始cur为空,p指向head指针的第一个数,tmp指向第二个数。 每次让p的next指向cur实现一次局部反转 然后cur和p同时往前移动一位 最后循环p,移动到链表尾部结束 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(N原创 2020-11-18 22:05:45 · 109 阅读 · 0 评论 -
4_从尾到头打印链表
简单 用递归代码量最少 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: //这代码每一步都要理解 能学到东西 vector<int> reversePrint(Li原创 2020-11-18 12:25:00 · 108 阅读 · 0 评论 -
3_链表中倒数第k个节点
简单 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* getKthFromEnd(ListNode* head, int k) { int ans=原创 2020-11-18 11:34:23 · 83 阅读 · 0 评论 -
2_二进制链表转整数
简单 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: int getDecimalValue(ListNode* head) { int sum=0;原创 2020-11-16 16:06:12 · 133 阅读 · 0 评论 -
1_删除链表中的结点
简单 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: void deleteNode(ListNode* node) { ListNode* tmp=node->原创 2020-11-16 14:59:34 · 68 阅读 · 0 评论