📄 dllist.h
字号:
/*------------------------------------------------------------------------- * * dllist.h * simple doubly linked list primitives * the elements of the list are void* so the lists can contain * anything * Dlelem can only be in one list at a time * * * Here's a small example of how to use Dllist's : * * Dllist *lst; * Dlelem *elt; * void *in_stuff; -- stuff to stick in the list * void *out_stuff * * lst = DLNewList(); -- make a new dllist * DLAddHead(lst, DLNewElem(in_stuff)); -- add a new element to the list * with in_stuff as the value * ... * elt = DLGetHead(lst); -- retrieve the head element * out_stuff = (void*)DLE_VAL(elt); -- get the stuff out * DLRemove(elt); -- removes the element from its list * DLFreeElem(elt); -- free the element since we don't * use it anymore * * Copyright (c) 1994, Regents of the University of California * * $Id: dllist.h,v 1.10 1999/05/31 23:48:03 tgl Exp $ * *------------------------------------------------------------------------- */#ifndef DLLIST_H#define DLLIST_Hstruct Dllist;struct Dlelem;typedef struct Dlelem{ struct Dlelem *dle_next; /* next element */ struct Dlelem *dle_prev; /* previous element */ void *dle_val; /* value of the element */ struct Dllist *dle_list; /* what list this element is in */} Dlelem;typedef struct Dllist{ Dlelem *dll_head; Dlelem *dll_tail;} Dllist;extern Dllist *DLNewList(void); /* initialize a new list */extern void DLFreeList(Dllist *); /* free up a list and all the * nodes in it */extern Dlelem *DLNewElem(void *val);extern void DLFreeElem(Dlelem *);extern Dlelem *DLGetHead(Dllist *);extern Dlelem *DLGetTail(Dllist *);extern Dlelem *DLRemTail(Dllist *l);extern Dlelem *DLGetPred(Dlelem *); /* get predecessor */extern Dlelem *DLGetSucc(Dlelem *); /* get successor */extern void DLRemove(Dlelem *); /* removes node from list */extern void DLAddHead(Dllist *list, Dlelem *node);extern void DLAddTail(Dllist *list, Dlelem *node);extern Dlelem *DLRemHead(Dllist *list); /* remove and return the head */extern void DLMoveToFront(Dlelem *); /* move node to front of its list */#define DLE_VAL(x) (x->dle_val)#endif /* DLLIST_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -