3.双链表
双链表和单链表的区别就是一个只能往后走,一个还能往前走
但是他们用一个缺点,就是长度。
长度限制了一些关于链表的操作和时间复杂度
以下是一个双链表
head <-> 1 <-> 2 <-> 3 <-> NULL
3.1 插入
插入只需要四行代码(手残党狂喜)
p -> next = head -> next;
head <-> 1 <-> 2 <-> 3 <-> NULL
p ┛
head -> next -> pre = p;
head -> 1 <-> 2 <-> 3 <-> NULL
p <┛
head -> next = p;
head -> p <-> 1 <-> 2 <-> 3 <-> NULL
p -> pre = head;
head <-> p <-> 1 <-> 2 <-> 3 <-> NULL
3.2 删除
插入只需要三行代码(手残党狂喜)
head -> next = p -> next;
head -> next -> pre = head;
delete p;
head <-> 1 <-> 2 <-> 3 <-> NULL
3.3 读取
一个方法
int p;
cin >> p;
node *elem = head;
int j = 0;
while(j < p){
elem = elem -> next;
j++;
}
(此时的elem就是读取的数据)