目录

数据结构(一):链表

目录
1
2
3
4
5
6
7
8
9
# 反转链表
def reverse(head):
	tail = head
	while tail and tail.next:
		tmp = tail.next
		tail.next = tmp.next
		tmp.next = head
		head = tmp
	return head
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 双向链表
class Node:
    # 提高访问属性的速度,并节省内存
    __slots__ = 'pre', 'nxt', 'key', 'val'

    def __init__(self, key=0, val=0):
        self.key = key
        self.val = val
        self.pre = self
        self.nxt = self

    def insert(self,x):
        q = self.nxt
        self.nxt = x
        x.pre = self
        x.nxt = q
        q.pre = x
    
    def remove(self,):
        self.pre.nxt = self.nxt
        self.nxt.pre = self.pre

双向链表

  • 0146 LRU 缓存机制
  • 0380 常数时间插入、删除和获取随机元素
  • 0381 O(1) 时间插入、删除和获取随机元素 - 允许重复
  • 0432 全 O(1) 的数据结构
  • 0460 LFU 缓存
  • 0716 最大栈