ZE-Standard-Libraries/include/list/list.h

210 lines
7.0 KiB
C
Raw Normal View History

2018-08-23 16:57:38 +00:00
#ifndef list_h
#define list_h
#include <list/list_type.h>
/************************************************
*
************************************************/
/*
*,,if_sid指示是否为新链表分配ID号
*: ,NULL.*/
2019-01-06 10:44:11 +00:00
#ifdef id_enable
2018-08-23 16:57:38 +00:00
extern List *initList(_Bool if_sid);
2019-01-06 10:44:11 +00:00
#else
extern List *initList(void);
#endif
2018-08-23 16:57:38 +00:00
/*
*,,if_sid指示是否为新节点分配ID号
*: ,NULL.*/
2019-01-06 10:44:11 +00:00
#ifdef id_enable
2018-08-23 16:57:38 +00:00
extern Node *initNode(_Bool if_sid);
2019-01-06 10:44:11 +00:00
#else
extern Node *initNode(void);
#endif
2018-08-23 16:57:38 +00:00
/*库中内部调用函数,旨在为新节点的储存值获取内存,并将相应的储存值储存在获取到的内存中,并指明储存值的类型.*/
extern int initMallocValueForNode(Node *,unsigned int,const void *);
/*************************************************
*:
*************************************************/
/*
**
*: 0,-1.*/
extern int insertInHead(List *p_list, Node *p_node);
/*
*
*: 0,-1.*/
extern int insertInTail(List *p_list, Node *p_node);
/*
*
*: t_node为指向目标节点的指针;p_node为指向新节点的指针;
*: 0,-1.*/
extern int insertAfterNode(List *p_list, Node *t_node, Node *p_node);
/*
*
*: t_node为指向目标节点的指针;p_node为指向新节点的指针;
*: 0,-1.*/
extern int insertBeforeNode(List *p_list, Node*t_node, Node *p_node);
/***********************************************
:
***********************************************/
/*
*,
*: t_node为指向目标节点的指针;p_node为指向新节点的指针;
*/
extern int replaceNode(List *p_list, Node *t_node, Node *p_node);
/*
*
*: t_node为指向目标节点的指针;p_node为指向新节点的指针;
*/
extern int exchangeNode(List *p_list, Node *f_node, Node *s_node);
/***********************************************
*:
***********************************************/
#ifdef id_enable
/*
*ID查找链表中的特定节点并从链表中移除相关节点,.
*0,-1.*/
extern int removeById(List *p_list, SID *s_id);
#endif
/*
*,
*0,-1.*/
extern int removeByNode(List *p_list, Node *p_node);
/*
*,,,便
*: ,NULL.*/
extern Node *popFromHead(List *p_list);
/*
*,,,便
*: ,NULL.*/
extern Node *popFromTail(List *p_list);
/***********************************************
*:
**********************************************/
#ifdef id_enable
/*
*ID查找链表中相关的单个节点
*: ,NULL.*/
extern Node *findByIdForNode(List *p_list, SID * s_id);
#endif
/*
*
*: type指明相关值的类型;value为指向储存相关值的内存的指针.
*: ,NULL.*/
extern Node *findByValue(List *p_list, unsigned int type, const void *value);
//void *findByIdForCustom(List *p_list, SID *s_id, int func(SID *));
/*
*.
*: type指明相关值的类型;value为指向储存相关值的内存的指针.
*: ,.NULL.*/
extern List *mply_findByValue(List *p_list, unsigned int type, const void *value);
/***********************************************
*: 使,
**********************************************/
/*
*.
*: func是一个函数指针, ,
0, 0.
*: 0,-1.*/
extern int sortListForCustom(List *p_list, int(*func)(Node *f_node, Node *s_node));
/***********************************************
*:
**********************************************/
/*
*
*: 0, -1.*/
extern int releaseList(List *p_list);
/*
*
*: func是一个函数指针,,.
*: 0, -1.*/
extern int releaseListForCustom(List *p_list, int (*func)(void *));
/*
*,
*: 0, -1.*/
extern int releaseListForSingle(List *p_list);
/*
*
*: 0, -1.*/
extern int releaseNode(Node *p_node);
/*
*
*: func是一个函数指针,,
* ,.
* 0,-1.
*: 0, -1.*/
extern int releaseNodeForCustom(Node *p_node, int (*func)(void *));
/*
*,
*: 0, -1.*/
extern int releaseOnlyNode(Node *p_node);
extern int isListEmpty(List *p_list);
/***********************************************
*
***********************************************/
static int if_safeModeForNode;
static List *node_list;
static List *list_list;
#endif