This commit is contained in:
Saturneic 2019-01-12 08:54:05 +08:00
parent 52806be374
commit 1116412c0a
15 changed files with 209 additions and 299 deletions

View File

@ -2,7 +2,7 @@
#define chain_h
#include <chain/chain_type.h>
#include <list/list.h>
#include <chain/chain.h>
/************************************************
*: ,
@ -285,4 +285,149 @@ extern CNode *findByStringForNode(Chain *, char *);
extern CNode *findByPointerForNode(Chain *, void *);
/************************************************
*,
************************************************/
/****
*ID模块相关宏
*/
/*直接获取一个以整型值初始化的节点不带ID的缩略*/
#define lni(cn) nodeWithInt(cn,0)
/*直接获取一个以无符号整型值初始化的不带ID节点的缩略*/
#define lnu(cn) nodeWithUInt(cn,0)
/*直接获取一个以无符号长整形值初始化的节点的缩略*/
#define lnull(cn) nodeWithULLInt(cn,0)
/*直接获取一个以浮点值初始化的不带ID节点的缩略*/
#define lnd(cn) nodeWithDouble(cn,0)
/*直接获取一个以字符串值初始化的不带ID节点的缩略*/
#define lns(cn) nodeWithString(cn,0)
/*直接获取一个以指针值初始化的不带ID节点的缩略*/
#define lnp(cn) nodeWithPointer(cn,0)
/****
*ID模块的相关宏
*/
/*直接获取一个以整型值初始化的带ID节点的缩略*/
#define lsni(cn) nodeWithInt(cn,1)
/*直接获取一个以浮点值初始化的带ID节点的缩略*/
#define lsnd(cn) nodeWithDouble(cn,1)
/*直接获取一个以字符串值初始化的带ID节点的缩略*/
#define lsns(cn) nodeWithString(cn,1)
/*直接获取一个以指针值初始化的节点的缩略*/
#define lsnp(cn) nodeWithPointer(cn,1)
/************************************************
*
************************************************/
/****
*
*/
/*在链表尾部直接加入一个已经用整型值初始化的不带ID的节点*/
#define lisrti(chain, cn) insertInTail(chain, lni(cn));
/*在链表尾部直接加入一个已经用浮点值初始化的不带ID的节点*/
#define lisrtd(chain, cn) insertInTail(chain, lnd(cn));
/*在链表尾部直接加入一个已经用无符号整型值初始化的不带ID的节点*/
#define lisrtu(chain, cn) insertInTail(chain, lnu(cn));
/*在链表尾部直接加入一个已经用无符号长整型值初始化的不带ID的节点*/
#define lisrtull(chain, cn) insertInTail(chain, lnull(cn));
/*在链表尾部直接加入一个已经用指针值初始化的不带ID的节点*/
#define lisrtp(chain, cn) insertInTail(chain, lnp(cn));
/*在链表尾部直接加入一个已经用字符串值初始化的不带ID的节点*/
#define lisrts(chain, cn) insertInTail(chain, lns(cn));
/****
*
*/
/*在链表头部直接加入一个已经用整型值初始化的不带ID的节点*/
#define lisrhi(chain, cn) insertInHead(chain, lni(cn));
/*在链表头部直接加入一个已经用浮点值初始化的不带ID的节点*/
#define lisrhd(chain, cn) insertInHead(chain, lnd(cn));
/*在链表头部直接加入一个已经用无符号整型值初始化的不带ID的节点*/
#define lisrhu(chain, cn) insertInHead(chain, lnu(cn));
/*在链表头部直接加入一个已经用无符号长整型值初始化的不带ID的节点*/
#define lisrhull(chain, cn) insertInHead(chain, lnull(cn));
/*在链表头部直接加入一个已经用指针值初始化的不带ID的节点*/
#define lisrhp(chain, cn) insertInHead(chain, lnp(cn));
/*在链表头部直接加入一个已经用字符串值初始化的不带ID的节点*/
#define lisrhs(chain, cn) insertInHead(chain, lns(cn));
/************************************************
*
************************************************/
/*快速获得指针类型的节点所储存的值*/
#define lidxp(chain, cn) getByPointerForNode(findByIndexForNode(chain, cn))
/*快速获得整型类型的节点所储存的值*/
#define lidxi(chain, cn) getByIntForNode(findByIndexForNode(chain, cn))
/*快速获得浮点类型的节点所储存的值*/
#define lidxd(chain, cn) getByDoubleForNode(findByIndexForNode(chain, cn))
/*快速获得字符串类型的节点所储存的值*/
#define lidxs(chain, cn) getByStringForNode(findByIndexForNode(chain, cn))
/*快速获得无符号长整型类型的节点所储存的值*/
#define lupdull(chain,cn,value) updateValueWithULLIntForNode(findByIndexForNode(chain, cn),value)
/************************************************
*
************************************************/
/*通过节点的序号直接得到它的值*/
#define lidxvle(chain,cn) (findByIndexForNode(chain, cn)->value)
/*通过节点序号直接移除节点*/
#define lrmvidx(chain,cn) removeByNode(chain, findByIndexForNode(chain, cn)
/*从列表头移除节点的缩略*/
#define lpoph(chain) popFromHead(chain)
/*从列表尾移除节点的缩略*/
#define lpopt(chain) popFromTail(chain)
/*通过节点的ID直接获得节点的值*/
#define lfndsid(chain,sid) (findByIdForNode(chain,sid)->value)
/*创建一个不带ID的链表的缩略*/
#define lstns() initList(0);
/*创建一个带有ID的链表缩略*/
#define lstn() initList(1);
#endif /* chain_h */

View File

@ -1,5 +1,5 @@
#ifndef list_print_h
#define list_print_h
#ifndef chain_print_h
#define chain_print_h
#include <chain/chain.h>
#include <event/event.h>
@ -39,4 +39,4 @@ __CALLBACK_STATE(printListForCustom);
void printNode(CNode *p_node);
#endif /* list_print_h */
#endif /* chain_h */

View File

@ -3,12 +3,12 @@
#include <list/list_type.h>
/*
/**
*
*/
typedef struct Node CNode;
/*
/**
*
*/
typedef struct List Chain;

View File

@ -1,155 +1,8 @@
#ifndef list_expand_1_h
#define list_expand_1_h
#ifndef event_h
#define event_h
#include <chain/chain.h>
/************************************************
*,
************************************************/
/****
*ID模块相关宏
*/
/*直接获取一个以整型值初始化的节点不带ID的缩略*/
#define lni(x) nodeWithInt(x,0)
/*直接获取一个以无符号整型值初始化的不带ID节点的缩略*/
#define lnu(x) nodeWithUInt(x,0)
/*直接获取一个以无符号长整形值初始化的节点的缩略*/
#define lnull(x) nodeWithULLInt(x,0)
/*直接获取一个以浮点值初始化的不带ID节点的缩略*/
#define lnd(x) nodeWithDouble(x,0)
/*直接获取一个以字符串值初始化的不带ID节点的缩略*/
#define lns(x) nodeWithString(x,0)
/*直接获取一个以指针值初始化的不带ID节点的缩略*/
#define lnp(x) nodeWithPointer(x,0)
/****
*ID模块的相关宏
*/
/*直接获取一个以整型值初始化的带ID节点的缩略*/
#define lsni(x) nodeWithInt(x,1)
/*直接获取一个以浮点值初始化的带ID节点的缩略*/
#define lsnd(x) nodeWithDouble(x,1)
/*直接获取一个以字符串值初始化的带ID节点的缩略*/
#define lsns(x) nodeWithString(x,1)
/*直接获取一个以指针值初始化的节点的缩略*/
#define lsnp(x) nodeWithPointer(x,1)
/************************************************
*
************************************************/
/****
*
*/
/*在链表尾部直接加入一个已经用整型值初始化的不带ID的节点*/
#define lisrti(list, x) insertInTail(list, lni(x));
/*在链表尾部直接加入一个已经用浮点值初始化的不带ID的节点*/
#define lisrtd(list, x) insertInTail(list, lnd(x));
/*在链表尾部直接加入一个已经用无符号整型值初始化的不带ID的节点*/
#define lisrtu(list, x) insertInTail(list, lnu(x));
/*在链表尾部直接加入一个已经用无符号长整型值初始化的不带ID的节点*/
#define lisrtull(list, x) insertInTail(list, lnull(x));
/*在链表尾部直接加入一个已经用指针值初始化的不带ID的节点*/
#define lisrtp(list, x) insertInTail(list, lnp(x));
/*在链表尾部直接加入一个已经用字符串值初始化的不带ID的节点*/
#define lisrts(list, x) insertInTail(list, lns(x));
/****
*
*/
/*在链表头部直接加入一个已经用整型值初始化的不带ID的节点*/
#define lisrhi(list, x) insertInHead(list, lni(x));
/*在链表头部直接加入一个已经用浮点值初始化的不带ID的节点*/
#define lisrhd(list, x) insertInHead(list, lnd(x));
/*在链表头部直接加入一个已经用无符号整型值初始化的不带ID的节点*/
#define lisrhu(list, x) insertInHead(list, lnu(x));
/*在链表头部直接加入一个已经用无符号长整型值初始化的不带ID的节点*/
#define lisrhull(list, x) insertInHead(list, lnull(x));
/*在链表头部直接加入一个已经用指针值初始化的不带ID的节点*/
#define lisrhp(list, x) insertInHead(list, lnp(x));
/*在链表头部直接加入一个已经用字符串值初始化的不带ID的节点*/
#define lisrhs(list, x) insertInHead(list, lns(x));
/************************************************
*
************************************************/
/*快速获得指针类型的节点所储存的值*/
#define lidxp(list, x) getByPointerForNode(findByIndexForNode(list, x))
/*快速获得整型类型的节点所储存的值*/
#define lidxi(list, x) getByIntForNode(findByIndexForNode(list, x))
/*快速获得浮点类型的节点所储存的值*/
#define lidxd(list, x) getByDoubleForNode(findByIndexForNode(list, x))
/*快速获得字符串类型的节点所储存的值*/
#define lidxs(list, x) getByStringForNode(findByIndexForNode(list, x))
/*快速获得无符号长整型类型的节点所储存的值*/
#define lupdull(list,x,value) updateValueWithULLIntForNode(findByIndexForNode(list, x),value)
/************************************************
*
************************************************/
/*通过节点的序号直接得到它的值*/
#define lidxvle(list,x) (findByIndexForNode(list, x)->value)
/*通过节点序号直接移除节点*/
#define lrmvidx(list,x) removeByNode(list, findByIndexForNode(list, x)
/*从列表头移除节点的缩略*/
#define lpoph(list) popFromHead(list)
/*从列表尾移除节点的缩略*/
#define lpopt(list) popFromTail(list)
/*通过节点的ID直接获得节点的值*/
#define lfndsid(list,sid) (findByIdForNode(list,sid)->value)
/*创建一个不带ID的链表的缩略*/
#define lstns() initList(0);
/*创建一个带有ID的链表缩略*/
#define lstn() initList(1);
#endif /* list_expand_1_h */
/************************************************
*便
************************************************/
@ -226,3 +79,5 @@
*使
*/
#define __CRETURN__ newCReturn()
#endif /* event_h */

View File

@ -1,79 +0,0 @@
#ifndef list_simple_h
#define list_simple_h
#include <list/list_type.h>
/************************************************
*: ,
* 使.
************************************************/
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithInt(int);
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithUInt(unsigned int);
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithDouble(double);
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithString(const char *);
/*
*, 使
*: ,NULL.*/
extern s_Node *s_nodeWithPointer(const void *);
/*
*,List结构中.
*.,便.
*: ,NULL.*/
extern s_Node *s_initNode(void);
/*在单项链表的头部插入一个节点
*: 0,-1.*/
extern int s_insertInHead(List *p_list, s_Node *s_p_node);
/*
*
*: 0,-1.*/
extern int s_insertInTail(List *p_list, s_Node *s_p_node);
/*
*
*: 0, -1.*/
extern int s_releaseNode(s_Node *s_p_node);
/*
*
*: 0, -1.*/
extern int s_releaseList(List *p_list);
/*
*
*: func是一个函数指针,,
* ,.
* 0,-1.
*: 0, -1.*/
extern int s_releaseListForCustom(List *p_list, int (*func)(void *));
/*
*
*: func是一个函数指针,,
* ,.
* 0,-1.
*: 0, -1.*/
extern int s_releaseNodeForCustom(s_Node *s_p_node, int (*func)(void *));
#endif /* list_simple_h */

View File

@ -6,24 +6,24 @@
#endif
/*
*
*
*/
typedef struct Node{
unsigned int type;//类型
void *value;//值指针
struct Node *next;//指向下一个节点
struct Node *last;//指向上一个节点
struct Node *next;//指向下一个链式结构节点
struct Node *last;//指向上一个链式结构节点
#ifdef id_enable
SID *s_id;
#endif
} Node;
/*
*
*
*/
typedef struct List{
Node *head;//指向第一个节点
Node *tail;//指向最后一个节点
Node *head;//指向第一个链式结构节点
Node *tail;//指向最后一个链式结构节点
uint64_t length;
#ifdef id_enable
SID *s_id;

View File

@ -9,7 +9,7 @@
@return
*/
uint64_t calListMemory(Chain * p_list){
Node *p_node = p_list->head;
CNode *p_node = p_list->head;
uint64_t nodes_size = 0LL;
uint64_t list_size = sizeof(p_list);
while(p_node != NULL){

View File

@ -105,13 +105,9 @@ Chain *newReturn(int if_status ,int status, char *argc, ...){
lisrtull(p_list, va_arg(args, unsigned long long));
count += 2;
}
else{
count++;
}
}
else{
lisrtu(p_list, va_arg(args, unsigned int));
else count++;
}
else lisrtu(p_list, va_arg(args, unsigned int));
break;
default:
break;
@ -130,6 +126,6 @@ Chain *newReturn(int if_status ,int status, char *argc, ...){
@return
*/
Chain *newCReturn(void){
inline Chain *newCReturn(void){
return newReturn(1, 0, NULL);
}

View File

@ -3,10 +3,10 @@
/**
@param p_node
@return
@param p_node
@return
*/
Node *copyNode(Node *p_node) {
Node *t_node = NULL;
@ -25,10 +25,10 @@ Node *copyNode(Node *p_node) {
/**
@param p_list
@return
@param p_list
@return
*/
List *copyList(List *p_list) {
Node *p_node;

View File

@ -4,11 +4,11 @@
//如果ID模块可能启用则编译以下代码
#ifdef id_enable
/**
ID查找链表中符合条件的第一个节点
ID查找链式结构中符合条件的第一个链式结构节点
@param p_list
@param p_list
@param s_id ID值
@return NULL
@return NULL
*/
Node *findByIdForNode(List *p_list, SID * s_id) {
Node *ph_node = p_list->head;
@ -39,12 +39,12 @@ Node *findByIdForNode(List *p_list, SID * s_id) {
/**
@param p_list
@param p_list
@param type
@param value
@return NULL
@return NULL
*/
Node *findByValue(List *p_list, uint type, const void *value) {
Node *p_node = p_list->head;
@ -82,12 +82,12 @@ Node *findByValue(List *p_list, uint type, const void *value) {
}
/**
@param p_list
@param p_list
@param type
@param value
@return
@return
*/
List *mply_findByValue(List *p_list, unsigned int type, const void *value) {
List *f_list = initList(0);

View File

@ -3,20 +3,20 @@
/**
@param p_list
@return
@param p_list
@return
*/
uint64_t len(List *p_list) {
return p_list->length;
}
/**
@param p_list
@return 10
@param p_list
@return 10
*/
int isListEmpty(List *p_list) {
if (p_list->head == NULL || p_list->tail == NULL)// If its head or tail is NULL,it would be thought as empty.

View File

@ -3,10 +3,10 @@
/**
@param if_sid ID
@return
@param if_sid ID
@return
*/
#ifdef id_enable
Node *initNode(_Bool if_sid)
@ -27,7 +27,7 @@ Node *initNode(void)
p_node->next = NULL;
p_node->last = NULL;
p_node->type = VOID;
// 链内存安全模式相关操作
// 链式结构内存安全模式相关操作
if (if_safeModeForNode) {
if_safeModeForNode = 0;
prec_node = initNode(0);
@ -39,10 +39,10 @@ Node *initNode(void)
}
/**
@param if_sid ID
@return
@param if_sid ID
@return
*/
#ifdef id_enable
List *initList(_Bool if_sid)
@ -73,9 +73,9 @@ List *initList(void)
}
/**
@param p_node
@param p_node
@param type
@param p_value
@return 0

View File

@ -2,10 +2,10 @@
#include <list/list.h>
/**
@param p_list
@param p_node
@param p_list
@param p_node
@return 0
*/
int insertInHead(List *p_list, Node *p_node) {
@ -24,19 +24,13 @@ int insertInHead(List *p_list, Node *p_node) {
}
/**
@param p_list
@param p_node
@param p_list
@param p_node
@return 0
*/
int insertInTail(List *p_list, Node *p_node) {
// 如果可能需要使用长链表模块则编译以下代码
/*
#ifdef list_quick_enable
if(p_list->p_lq != NULL && p_list->p_lq->if_sort) return -1;
#endif
*/
if (isListEmpty(p_list)) {
p_list->head = p_node;
p_list->tail = p_node;

View File

@ -1,6 +1,5 @@
#include <type.h>
#include <list/list.h>
#include <chain/chain_quick.h>
static int if_safeModeForNode = 0;
static List *node_list = NULL;