|
/* Concatenates two lists into first list */ void list_concat(list_t *first, list_t *second) { if (first->head) { if (second->head) { first->tail->next = second->head; first->tail = second->tail; } } else *first = *second; second->head = second->tail = NULL;
first->size += second->size; }
/* Allocates a new listnode_t from heap */ listnode_t* list_node_create(void* data) { listnode_t *node = (listnode_t*)malloc (sizeof(listnode_t)); node->next = NULL; node->data = data; return node; }
listnode_t* list_key_create(long key) { listnode_t *node = (listnode_t*)malloc (sizeof(listnode_t)); node->next = NULL; node->key = key; return node; }
/* Allocates a empty list_t from heap */ list_t* list_create() { list_t *list = (list_t*)malloc (sizeof(list_t)); list->size = 0; list->head = list->tail = NULL; return list; }
/* Frees a empty list_t from heap */ void list_destroy(list_t *in_list, pfcb_list_node_free pf) { list_remove_all(in_list, pf); free(in_list); }
/* Gets count of nodes in the list */ size_t list_size(const list_t* in_list) { return in_list->size; }
/* Gets node by index 0-based. 0 is head */ listnode_t* list_node_at(const list_t* in_list, int index) { int i=0; listnode_t *node = in_list->head;
assert(index >=0 && index < (int)in_list->size);
while (i < index) { node = node->next; i++; }
return node; }
公共头文件:
/* unistd.h 2008-09-15 Last created by cheungmine. All rights reserved by cheungmine. */ #ifndef UNISTD_H__ #define UNISTD_H__
/* Standard C header files included */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h>
/*============================================================================*/
typedef unsigned char uchar, byte, BYTE;
typedef unsigned short uint16, word_t, ushort;
typedef unsigned __int32 uint, uint32, dword_t, size_t;
typedef unsigned long ulong;
typedef __int16 int16; typedef __int32 int32; typedef __int64 int64, longlong;
typedef long lresult;
typedef unsigned __int64 uint64, qword_t, ulonglong;
#ifndef BOOL typedef int BOOL; #define TRUE 1 #define FALSE 0 #endif
#ifndef RESULT #define RESULT lresult #define _SUCCESS 0 #define _ERROR -1 #endif
#ifndef IN #define IN #endif
#ifndef OUT #define OUT #endif
#ifndef INOUT #define INOUT #endif
#ifndef OPTIONAL #define OPTIONAL #endif
#define SIZE_BYTE 1 #define SIZE_ACHAR 1 #define SIZE_WCHAR 2 #define SIZE_SHORT 2 #define SIZE_INT 4 #define SIZE_LONG 4 #define SIZE_FLT 4 #define SIZE_DBL 8 #define SIZE_WORD 2 #define SIZE_DWORD 4 #define SIZE_QWORD 8 #define SIZE_LINT 8 #define SIZE_INT64 8 #define SIZE_UUID 16
/*============================================================================*/ #endif /*UNISTD_H__*/
好了。是不是很简单啊。适合初学者学习,适合喜欢简单就是生活的人!
共2页: 上一页 [1] 2 下一页
|