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

📄 linklist.h

📁 多叉树实现
💻 H
字号:
/****************************************************************************  Copyright (c) 2008 OCC, Inc.****  Project: Link List**  File:    linklist.h**  Author:  Michael**  Date:    10/31/2008****  Purpose:**    Header file for linklist.c.**************************************************************************/#ifndef LINKLIST_H#define LINKLIST_H#ifdef __cplusplusextern "C"{#endif /* __cplusplus *//* Include files. */#include <stdlib.h>#include <stdio.h>#include <string.h>/* Macro constant definitions. */#define MEM_SET_DEFAULT_VALUE 0x00#define MIKETEST#ifdef MIKETEST#define MEMALLOC malloc#define MEMFREE free#define PRINTF(formatP, argP...) \  printf("%s()[%d]", __FUNCTION__, __LINE__);printf((formatP), ##argP)#endif/* Type definitions. */#ifdef MIKETESTtypedef unsigned char uint8;      /* 8-bit unsigned value. */typedef unsigned short uint16;    /* 16-bit unsigned value. */typedef unsigned int uint32;      /* 32-bit unsigned value. */typedef signed char sint8;        /* 8-bit signed value. */typedef signed short sint16;      /* 16-bit signed value. */typedef signed int sint32;        /* 32-bit signed value. */typedef enum{    /* Common return codes. */    eOS_RET_MIN,    eOS_RET_SUCCESS = eOS_RET_MIN,    eOS_RET_FAILURE,    eOS_RET_INVALID_ARG,    eOS_RET_INVALID_STATE,    eOS_RET_NO_RESOURCE,    eOS_RET_TIME_OUT,    eOS_RET_AGAIN,    eOS_RET_NOT_EXIST,    eOS_RET_ALREADY_EXIST,} eOsRet;#endif /* MIKETEST */typedef enum{    eLINK_LIST_ADD_TYPE_MIN = 0,    eLINK_LIST_ADD_TYPE_CREATE_HEARDER = eLINK_LIST_ADD_TYPE_MIN,    eLINK_LIST_ADD_TYPE_ADD_Y_BROTHER, /* add young brother(next) node. */    eLINK_LIST_ADD_TYPE_ADD_O_BROTHER, /* add old brother(previous) node. */    eLINK_LIST_ADD_TYPE_ADD_CHILD,     /* add child node. */    eLINK_LIST_ADD_TYPE_MAX,} eLinkListAddType;typedef struct{    char *nameP;    char *valueP;} tAttrElement;typedef struct _tAttrArray{    uint8 attrCount;    tAttrElement *attrP;} tAttrArray;typedef struct tLinkListNode{    struct tLinkListNode *parentP;    /* point to parent node. */    struct tLinkListNode *childP;     /* point to child node. */    struct tLinkListNode *oldBrotherP;   /* point to old brother(previous) node */    struct tLinkListNode *youngBrotherP;   /* point to young brother(next) node */    void *dataP;} tLinkListNode;typedef tLinkListNode* tLinkListHeader;typedef eOsRet(*DataCreateFunP)(tLinkListNode *newNodeP, void *dataP);typedef eOsRet(*DataDeleteFunP)(tLinkListNode *deleteNodeP);typedef void(*DataDumpFunP)(void *dataP);typedef eOsRet(*DataFindFunP)(void *linkNodeDataP, void *dataP);/* External function declarations. */tLinkListNode *LinkListAddNode(tLinkListNode *linkListNodeP,  eLinkListAddType addType, void *dataCreateFunP, void *dataP);tLinkListNode *LinkListNodeCreate(void *dataCreateFunP, void *dataP);tLinkListNode *LinkListNodeFind(tLinkListNode *linkListNodeP,  void *dataFindFunP, void *dataP);tLinkListNode *LinkListFind(tLinkListNode * linkListNodeP,  void *dataFindFunP, void * dataP);eOsRet LiniListNodeDelete(tLinkListNode *deleteNodeP,  void *dataDeleteFunP);eOsRet LinkListDelete(tLinkListNode *linkListNodeP,  void *dataDeleteFunP);eOsRet LinkListNodeDump(tLinkListNode *linkListNodeP,  void *dataDumpFunP);eOsRet LinkListDump(tLinkListNode *linkListNodeP,  void *dataDumpFunP);/* Macro API definitions. */#define ASSERT_POINTER(ptr) \    if ((ptr) == NULL) \    { \        printf("%s() %s@%d argument invalid.\n", __FUNCTION__, __FILE__, \          __LINE__); \        return (eOS_RET_INVALID_ARG); \    }#define ASSERT_RETURN(ret) \    if ((ret) != eOS_RET_SUCCESS) \    { \        printf("%s() %s@%d failed,ret %d.\n", __FUNCTION__, __FILE__, \          __LINE__, ret); \        return (ret); \    }/* Global variable declarations. */#ifdef __cplusplus} /* extern "C" */#endif /* __cplusplus */#endif /* LINKLIST_H */

⌨️ 快捷键说明

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