鍊錶的C語言實現

2021-05-22 09:26:43 字數 1057 閱讀 9096

[編輯] c巨集例項

以下**摘自linux核心2.6.21.5原始碼(部分),展示了鍊錶的另一種實現思路,未採用ansi c標準,採用gnu c標準,遵從gpl版權許可。

struct list_head ;

#define list_head_init(name)

#define list_head(name) /

struct list_head name = list_head_init(name)

static inline void init_list_head(struct list_head *list)

static inline void __list_add(struct list_head *new,

struct list_head *prev,

struct list_head *next)

static inline void list_add(struct list_head *new, struct list_head *head)

static inline void __list_del(struct list_head * prev, struct list_head * next)

static inline void list_del(struct list_head *entry)

#define __list_for_each(pos, head) /

for (pos = (head)->next; pos != (head); pos = pos->next)

#define list_for_each_entry(pos, head, member)                          /

for (pos = list_entry((head)->next, typeof(*pos), member);      /

prefetch(pos->member.next), &pos->member != (head);        /

pos = list_entry(pos->member.next, typeof(*pos), member))

雙向鍊錶C語言實現

ifndef stdlist h define stdlist h typedef struct tagstdnode stdnode,lpstdnode typedef struct tagstdlist stdlist,lpstdlist 鍊錶資料結構 struct tagstdnode 鍊錶節...

線性鍊錶 C語言實現

include include define error 0 define ok 1 define equal 1 define overflow 1 define list init size 100 define listincrement 10 struct stustu 50 typedef...

反轉鍊錶 C語言實現

題目要求 在o n 的時間內反轉鍊錶,並返回反轉後鍊錶的頭指標。分析 求解鍊錶問題首先一定要考慮非空問題,而且要注意終止的位置。如圖所示,反轉的時候定義三個節點,pcur代表當前節點 pnext代表指向的下乙個節點 ppre代表前乙個節點。有了這三個節點就可以從前往後遍歷,而且保證鍊錶不會斷裂!in...