Files
Linux-C-Notes/C11-数据结构/ds/line/stack/list/llist.h
2024-05-27 02:33:10 +08:00

40 lines
846 B
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef LLIST_H__
#define LLIST_H__
#define LLIST_FORWARD 1
#define LLIST_BACKWARD 2
// !!! 变长结构体
struct llist_node_st
{
struct llist_node_st *prev;
struct llist_node_st *next;
// data要放在最后
char data[1]; // 占位符数据的起始。C99才只是[0]
};
typedef struct
{
int size;
struct llist_node_st head;
} LLIST;
typedef void llist_op(const void *);
typedef int llist_cmp(const void *, const void *);
LLIST *llist_create(int initsize);
int llist_insert(LLIST *ptr, const void *data, int mode);
void *llist_find(LLIST *ptr, const void *key, llist_cmp *);
int llist_delete(LLIST *, const void *key, llist_cmp *);
int llist_fetch(LLIST *, const void *key, llist_cmp *, void *data);
void llist_travel(LLIST *ptr, llist_op *op);
void llist_destroy(LLIST *ptr);
#endif