#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...