1. 程式人生 > >【模板】雙向鏈表

【模板】雙向鏈表

模板 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

【模板】雙向鏈表