1. 列表的构造
1.1 节点定义
struct Node{
int data;
Node * next = NULL;
Node * prev = NULL;
Node(int data){
this->data = data;
}
};
int main() {
Node * head = new Node(-1);
Node * tail = new Node(-1);
head->next = tail;
tail->prev = head;
}
1.2 插入
int main() {
int A[] = {
1,2,3,4,5,6,7};
Node * head = new Node(-1);
Node * tail = new Node(-1);
head->next = tail;
tail->prev = head;
int len = sizeof(A)/sizeof(int);
Node * tmp = head;
for(int i =0;i<len;i++){
Node * tmp_next = tmp->next;
Node * new_node = new Node(A[i]);
tmp->next = new_node;
new_node->prev = tmp;
new_node->next = tmp_next;
tmp_next->prev = new_node;
tmp = tmp->next;
}
1.3 遍历
for(Node* tmp = head; tmp!=tail; tmp = tmp->next){
cout<<tmp->data<<" ";
}
1.4 删除
for(Node* tmp = head; tmp!=tail; tmp = tmp->next){
if(tmp->data == 2){
Node* tmp_prev = tmp->prev;
Node* tmp_next = tmp->next;
tmp_prev->next = tmp_next;
tmp_next->prev = tmp_prev;
}
}