[編輯] 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...