linked-list
0. 说明
- 此章节代码主要使用cpp
- 此章节主要题目来源为leetcod
1. 链表相关
链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。
链表的入口节点称为链表的头结点也就是head。
此处附上代码随想录的思维导图
这个图基本上概括了链表的所有知识点与考点了。
2.题目练习
2.1 移除链表元素
link:移除链表元素 参考代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution
{
public:
ListNode* removeElements(ListNode* head, int val)
{
ListNode* dummy = new ListNode(-1);
dummy->next=head;
ListNode* cur = dummy;
while(cur->next!=nullptr)
{
if(cur->next->val == val)
{
ListNode* temp = cur->next;
cur->next=cur->next->next;
delete temp;
}
else
{
cur=cur->next;
}
}
head=dummy->next;
delete dummy;
return head;
}
};
最基础的链表题目了,建立一个虚拟头节点然后最后把头节点删除的老套路了。必须熟记这个模板。
2.2 设计链表
link:设计链表 参考代码入下: