2.3 线性表的链式表示
2.3.1 单链表的定义
2.3.3 双向链表

#include<iostream>
#include<list>
int main(){
list<int> myList;
myList.push_back(1);
myList.push_front(0);
myList.pop_back(1);
myList.pop_front(0);
}
2.3.4 循环链表
LeetCode141:判断链表是否为环形链表
bool hasCycle(ListNode *head)
{
ListNode *dummy = new ListNode(0, head);
ListNode *slow = dummy;
ListNode *fast = head;
while (fast && fast->next)
{
if (slow == fast)
{
return true;
}
slow = slow->next;
fast = fast->next->next;
}
return false;
}
2.3.5 静态链表
常见笔试题:反转链表
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* prev = nullptr;
ListNode* curr = head;
while (curr) {
ListNode* next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
return prev;
}
};