C語言 雙向鍊錶的基本運用

2021-09-27 14:25:56 字數 2432 閱讀 8233

#include #include #include // 雙向鍊錶的基本運用

typedef struct struct7tag

struct7list;

void struct7_print(struct7list *hne)

printf("\n");

}void struct7_rprint(struct7list *hne)

printf("\n");

}// 返回自定義資料結構兩種方式 1、struct struct7tag 2、struct7list int n:節點數量

struct struct7tag * struct7_create(int n)

end -> next = null; // 尾節點 next設為null

return head;

}// 得到頭結點

struct7list * struct7_gethead(struct7list * hne)

// 得到尾節點

struct7list * struct7_getend(struct7list * hne)

// 得到節點個數

int struct7_len(struct7list * hne)

struct7list * struct7_position(struct7list * hne, int n)

len = head -> num; // 長度

// 處理特殊情況

if (n == 0 || n < -len )

return head;

if (n > len)

n = len;

num = n < 0 ? n + len + 1 : n; // 從頭結點開始應該偏移位置

i = num - now; // 從當前節點開始應該偏移位置 >0 順序 <0 逆序

if (num > abs(i)) else

}switch (direction)

// 測試演算法開啟

// char *tip = ;

// printf("%s%d單位\n", tip[direction], num, n);

return re;

}// 插入節點 return 1:成功 0:失敗 int n:<0 相對於尾節點n的位置 =0 返回頭結點 >0 相對於頭結點n的位置

int struct7_insert(struct7list *hne, int n)

pos = struct7_position(hne, n); // 得到 第n節點位址

if (pos -> last == null)

pos = pos -> next;

node -> num = rand() % 101; // 0~100 隨機數

node -> last = pos -> last; // 新增節點前驅節點 等於 第n節點前驅節點

pos->last = node; // 第n節點前驅節點 等於 新增節點位址

pos = node -> last; // 得到第n-1節點位址

// 節點數量加一

pos = struct7_gethead(hne);

++pos -> num;

printf("在第%d位置插入節點:%d\n", n, node->num);

return 1;

}// 刪除節點 return 1:成功 0:失敗 int n:<0 相對於尾節點n的位置 =0 返回頭結點 >0 相對於頭結點n的位置

int struct7_delete(struct7list *hne, int n)

// 移出對應節點 return 1:成功 0:失敗 int n:<0 相對於尾節點n的位置 =0 返回頭結點 >0 相對於頭結點n的位置

int struct7_move(struct7list *pos)

if (pos -> last)

pos -> last = null;

pos -> next = null;

return 1;

}// 修改節點 return 1:成功 0:失敗 int n:修改位置

int struct7_update(struct7list *hne, int n)

// 移出並獲取第一節點 struct7list * hne:頭結點或者中間節點或者尾節點

struct7list * struct7_blpop(struct7list * hne)

// 移出並獲取最後節點

struct7list * struct7_brpop(struct7list * hne)

// 移出並獲取指定節點

struct7list * struct7_bzpop(struct7list * hne, int n)

void main()

}}// 雙向鍊錶的基本運用

雙向鍊錶C語言

鍊錶結構定義 typedef struct node 建立鍊錶 int creat list struct node h h data 0 0 h llink null h rlink null return 1 清空鍊錶 int free list struct node h return 1 查...

C語言雙向鍊錶

雙向鍊錶基本結構 typedef struct pnode pnode 建立乙個雙向鍊錶,並列印出煉表中儲存的資料 include include 包含malloc函式 void main pnode 第乙個節點head pnode head malloc sizeof pnode head dat...

C語言雙向鍊錶

原文 c語言雙向鍊錶 今天寫了點雙向鍊錶的各種操作,寫插入的時候費了點時間,不過,現在看來還是值得耗費那點時間去寫的,這種小東西應該能信手拈來才行啊。1 雙向鍊錶 2 include 3 include strcmp const char const char return 0 is equal 4...