C語言 資料結構之雙向鍊錶

2021-09-02 22:14:33 字數 2482 閱讀 5845

本文將實現雙向鍊錶的基礎介面功能

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 雙向鍊錶中有兩個指標域,分別為直接前驅和...