本文將實現雙向鍊錶的基礎介面功能
1.初始化/銷毀
2.增刪改查
標頭檔案dlist.h
#pragma once
//資料型別
typedef
int dldatatype;
//結點型別
typedef
struct dlistnode dlistnode;
//雙向鍊錶型別
typedef
struct
dlist;
//介面
//初始化/銷毀
void
dlistinit
(dlist *dlist)
;//清空
void
dlistclear
(dlist *dlist)
;//銷毀
void
dlistdestroy
(dlist *dlist)
;//增刪查改
//頭插
void
dlistpushfront
(dlist *dlist,dldatatype val)
;//尾插
void
dlistpushback
(dlist *dlist, dldatatype val)
;//查詢結點
dlistnode *
dlistfind
(dlist *dlist,dldatatype val)
;//在pos前面插入
void
dlistinsert
(dlistnode *pos, dldatatype val)
;//刪除pos結點,pos不是頭結點
void
dlisterase
(dlistnode *pos)
;//頭刪
void
dlistpopfront
(dlist *dlist)
;//尾刪
void
dlistpopback
(dlist *dlist)
;//列印
void
dlistprint
(dlistnode *head)
;
函式定義dlist.c
#define _crt_secure_no_warnings 1
#include
"dlist.h"
#include
#include
#include
//內部結點
//建立新結點空間
dlistnode *
buynode
(dldatatype val)
void
dlistinit
(dlist *dlist)
void
dlistclear
(dlist *dlist)
dlist->head->next = dlist->head;
dlist->head->prev = dlist->head;
}void
dlistdestroy
(dlist *dlist)
//頭插
void
dlistpushfront
(dlist *dlist, dldatatype val)
//尾插
void
dlistpushback
(dlist *dlist, dldatatype val)
//查詢
dlistnode *
dlistfind
(dlist *dlist, dldatatype val)
}return
null;}
//在pos結點前面插入
void
dlistinsert
(dlistnode *pos, dldatatype val)
void
dlisterase
(dlistnode *pos)
//頭刪
void
dlistpopfront
(dlist *dlist)
//尾刪
void
dlistpopback
(dlist *dlist)
void
dlistprint
(dlistnode *head)
printf
("\n");
}
測試部分test.c
#define _crt_secure_no_warnings 1
#include
"dlist.h"
#include
#include
void
test()
intmain()
C 語言 資料結構之雙向鍊錶
雙向鍊錶的空間結構如下圖所示 int initdlist dlinklist head 初始化雙向迴圈鍊錶 int createdlist dlinklist head,int n 建立雙向迴圈鍊錶 return 1 void printdlist dlinklist head 輸出雙向迴圈鍊錶中的...
資料結構雙向鍊錶(c語言)
通過c語言實現雙向鍊錶的建立 初始化 頭插法插入結點 尾插法插入結點 在指定位置新增結點 刪除指定位置的結點 查詢結點的內容 獲取結點的長度 列印輸出結點的內容。include include typedef struct list list void newlist list l void set...
雙向鍊錶 資料結構C語言
在雙鏈表中,nextelem 的函式執行時間為o 1 而 priorelem 的執行時間為o n 所以定義了雙鏈表的概念 雙鏈表的儲存結構為的 實現 飛飛飛 雙向鍊錶的儲存結構 typedef struct dulnodedulnode,dulinklist 雙向鍊錶中有兩個指標域,分別為直接前驅和...