【模板】雙向鏈表
阿新 • • 發佈:2017-10-08
模板 sea malloc alloc struct style hang col ret
#include <bits\stdc++.h> using namespace std; typedef long long ll; struct Node{ int key; Node *next,*prev; }; Node *nil; void init(){ nil = (Node *) malloc(sizeof(Node)); nil->next = nil; nil->prev = nil; } void insert(int key){ Node *x = (Node *) malloc(sizeof(Node)); x->key = key; //在頭結點後添加元素 x->next = nil->next; nil->next->prev = x; nil->next = x; x->prev = nil; } Node *listSearch(int key){ Node *cur = nil->next; // 從頭結點後面的元素開始訪問 while(cur != nil && cur->key != key){ cur = cur->next; }return cur; } void deleteNode(Node *t){ if(t == nil) return; // t為頭結點時不作處理 t->prev->next = t->next; t->next->prev = t->prev; free(t); } void deleteFirst(){ deleteNode(nil->next); } void deleteLast(){ deleteNode(nil->prev); } void deleteKey(int key){//刪除搜索到的結點 deleteNode(listSearch(key)); } void printList(){ Node *cur = nil->next; int isf = 0; while(true){ if(cur == nil) break; if(isf++ > 0) printf(" "); printf("%d",cur->key); cur = cur->next; } printf("\n"); } int main() { return 0; } // writen by zhangjiuding
【模板】雙向鏈表