跳到主要内容

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:设计链表 参考代码入下: