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

📄 doublelist.h

📁 C/C++ 多任务下的数据结构与算法 (周伟明)华中科技大学出版社
💻 H
字号:
/*
 * Copyright (c) 2006-2008
 * Author: Weiming Zhou
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear
 * in supporting documentation.  
 */

/* 
 *	DoubleList.h
 *
 *	DESCRIPTION
 *		Interface to a generic double list type.
 *
 *	HISTORY
 *		10-06-98	create by zhouweiming.
 *
 */
#ifndef __DOUBLELIST_H__
#define __DOUBLELIST_H__

#ifdef __cplusplus
extern "C" {
#endif

typedef struct DOUBLELIST_st {
    DOUBLENODE	*pHead;     /* 第1个节点的指针 */
    DOUBLENODE	*pTail;     /* 最后1个节点的指针 */
    DOUBLENODE  *pCur;      /* 当前节点的指针 */
    UINT        uCount;     /* 保存链表节点的个数 */
} DOUBLELIST;


/* create/destroy functions */
DOUBLELIST *    DoubleList_Create( void );
void            DoubleList_Destroy( DOUBLELIST * pList, 
                                   DESTROYFUNC DestroyFunc );

/* insertion functions */
INT DoubleList_InsertHead( DOUBLELIST *pList, void *pData );
INT DoubleList_InsertTail( DOUBLELIST *pList, void *pData );

/* removal functions */
void *	DoubleList_PopHead( DOUBLELIST *pList );
void *	DoubleList_PopTail( DOUBLELIST *pList );

INT	DoubleList_Delete( DOUBLELIST *pList, 
                             void *pMatchData, 
				 COMPAREFUNC CompareFunc, 
				 DESTROYFUNC DestroyFunc );


/* retrieval functions */
void *	DoubleList_GetHead( DOUBLELIST *pList );
void * 	DoubleList_GetTail( DOUBLELIST *pList );


void *	DoubleList_Find( DOUBLELIST *pList, void *pMatchData, 
                        COMPAREFUNC CompareFunc );



void            DoubleList_EnumBegin( DOUBLELIST *pList );
void       *    DoubleList_EnumNext( DOUBLELIST *pList );

DOUBLENODE *    DoubleList_EnumNode( DOUBLELIST *pList );

DOUBLENODE *    DoubleList_PopNode( DOUBLELIST *pList, DOUBLENODE *pNode );


/* miscellaneous functions */
unsigned        DoubleList_GetCount( DOUBLELIST *pList );
DOUBLELIST *    DoubleList_Copy( DOUBLELIST *pList, COPYFUNC CopyFunc );

/* sort functions */
INT             DoubleList_InsertSort( DOUBLELIST *pList, 
                                      COMPAREFUNC CompareFunc );

INT             DoubleList_Merge( DOUBLELIST *pListA, DOUBLELIST *pListB, 
                                 COMPAREFUNC CompareFunc );
DOUBLELIST*     DoubleList_Split( DOUBLELIST *pList, unsigned count );

INT             DoubleList_MergeSort(DOUBLELIST *pList, 
                                 COMPAREFUNC CompareFunc, 
                                 UINT uInsertSortCount);

INT DoubleList_RadixSort( DOUBLELIST *pList,
                         UINT uRadix,
                         UINT uMaxKeyLen,
                         GETKEYFUNC GetKeyFunc );

/* traverse functions */
void DoubleList_Traverse( DOUBLELIST *pList, TRAVERSEFUNC TraverseFunc );

#define MAX_RADIX  1000

#ifdef __cplusplus
}
#endif

#endif /* __DOUBLELIST_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -