unicstl/datastruct/list.h

75 lines
1.6 KiB
C

#ifndef _LIST_H_
#define _LIST_H_
#include "common.h"
// #define LINK_LIST 1
// #define LIST 1
#ifdef LINK_LIST
#define LIST_TEST
#ifdef LIST_TEST
typedef int list_data_t;
#else
typedef int list_data_t;
#endif
typedef struct _list_t
{
list_data_t data;
struct _list_t * prev;
struct _list_t * next;
}list_t,*plist_t;
typedef void (*list_data_disp_t)(list_data_t data);
bool list_init(plist_t *list);
void list_destroy(plist_t *list);
bool list_empty(plist_t list);
void list_clear(plist_t list);
bool list_insert_head(plist_t list, list_data_t data);
bool list_insert_tail(plist_t list, list_data_t data);
bool list_delete(plist_t list, list_data_t data);
uint32_t list_count(plist_t list);
void list_traversal_sequence(plist_t list, list_data_disp_t disp);
void list_traversal_reversed(plist_t list, list_data_disp_t disp);
extern void list_test(void);
#endif
#ifdef LIST
typedef int list_data_t;
struct _list
{
list_data_t * array; // 数组(存储列表元素)
int capacity; // 列表容量
int size; // 列表大小
int extend_ratio; // 列表每次扩容的倍数
};
typedef struct _list * list_t;
bool list_init(list_t list);
void list_destory(list_t list);
bool list_empty(list_t list);
int list_size(list_t list);
bool list_insert(list_t list, int index, list_data_t data);
bool list_append(list_t list, list_data_t data);
list_data_t list_delete(list_t list, int index);
bool list_clear(list_t list);
list_data_t list_get(list_t list, int index);
bool list_set(list_t list, int index, list_data_t data);
extern void list_test(void);
#endif
#endif // _LIST_H_