⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lists.h

📁 Microsoft Visual C++ 6.0环境下的无损压缩测试工程
💻 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 + -