📄 lists.h
字号:
/* Name : lists.h * * Notes: This file contains all of the structure definitions and functions * prototypes for the Epsilon linked list library. These structures * are based on code that is (C) 1985-1993 Commodore-Amiga, Inc. * * $Log: lists.h,v $ * Revision 1.1 95/10/20 15:24:40 idr * Initial revision */#ifndef LISTS_H#define LISTS_H/******************************************************************************//* Name : struct List * * Notes: Full featured list header. * */struct List{ struct Node * lh_Head; struct Node * lh_Tail; struct Node * lh_TailPred; UBYTE lh_Type; UBYTE lh_pad;};/******************************************************************************//* Name : struct MinList * * Notes: Minimal List Header - no type checking */struct MinList{ struct MinNode * mlh_Head; struct MinNode * mlh_Tail; struct MinNode * mlh_TailPred;};/******************************************************************************//* Name : struct Node * * Notes: List Node Structure. Each member in a list starts with a Node * */struct Node { struct Node * ln_Succ; /* Pointer to next (successor) */ struct Node * ln_Pred; /* Pointer to previous (predecessor) */ UBYTE ln_Type; /* Type spec. for this node. */ BYTE ln_Pri; /* Priority, for sorting */ STRPTR ln_Name; /* ID string, null terminated */};/******************************************************************************//* Name : struct Node * * Notes: minimal node -- no type checking possible * */struct MinNode { struct MinNode * mln_Succ; struct MinNode * mln_Pred;};/******************************************************************************/#define IsListEmpty(x) ( ((x)->lh_TailPred) == (struct Node *)(x) )#ifdef HAVE_INLINEextern inline void NewList( struct List * list ){ list->lh_Head = (struct Node *)&(list->lh_Tail); list->lh_Tail = NULL; list->lh_TailPred = (struct Node *)&(list->lh_Head);}extern inline struct Node * GetHead( struct List * list ){ return( (list->lh_Head->ln_Succ == NULL) ? NULL : list->lh_Head ); }extern inline struct Node * GetTail( struct List * list ){ return( (list->lh_TailPred->ln_Pred == NULL) ? NULL : list->lh_TailPred ); }extern inline struct Node * SuccNode( struct Node * node ){ return( (node->ln_Succ->ln_Succ == NULL) ? NULL : node->ln_Succ ); }extern inline struct Node * PredNode( struct Node * node ){ return( (node->ln_Pred->ln_Pred == NULL) ? NULL : node->ln_Pred ); }#elseextern void NewList( struct List * );extern struct Node * GetTail( struct List * );extern struct Node * GetHead( struct List * );extern struct Node * PredNode( struct Node * );extern struct Node * SuccNode( struct Node * );#endifextern void AddHead( struct List *, struct Node * );extern void AddTail( struct List *, struct Node * );extern void Insert( struct List *, struct Node *, struct Node * );extern void preInsert( struct List *, struct Node *, struct Node * );extern void Remove( struct Node * );extern struct Node * RemHead( struct List * );extern struct Node * RemTail( struct List * );extern void Enqueue( struct List *, struct Node * );extern struct Node * FindName( struct List *, STRPTR );extern void SortList( struct List * );extern void MoveList( struct List * src, struct List * dest );extern void AppendList( struct List * preList, struct List * postList );extern void PrependList( struct List * postList, struct List * preList );#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -