這是乙個以listdata(乙個結構體)為資料域的鍊錶,如需使用,請在list.h中修改對它的定義。
鍊錶list
資料結構體listdata
在list.**件裡的注釋已經明確說明各個函式的作用、引數與返回值,不再贅述
與陣列相同,下標從0開始
使用前,先用newlist()
函式建立鍊錶
使用後,記得用deletelist()
函式釋放鍊錶
在你的**編譯時,需要包含list.c檔案
list.**件
鍊錶adt介面標頭檔案
#ifndef __list_h
#define __list_h
//使用時自行修改listdata結構
typedef
struct datafieldlistdata;
typedef
struct nodenode;
//節點
typedef
struct liststrliststruct;
//鍊錶結構體
typedef liststruct* list;
//鍊錶
list newlist
(void);
//新建乙個初始化鍊錶
/*新建鍊錶。成功時返回乙個新鍊錶,失敗時返回null 引數:沒有*/
intnewdata
(list,listdata)
;//給鍊錶加入新資料
/*給鍊錶加入資料。成功時返回0,失敗時返回-1。引數:乙個鍊錶、乙個資料結構體*/
listdata getvalue
(list,
int)
;//取煉錶值
/*取出指定鍊錶值。成功時返回指定鍊錶值,失敗時返回空listdata。*/
/*引數:乙個鍊錶,乙個下標*/
intdeletelist
(list)
;//刪除鍊錶
/*把整個鍊錶釋放。引數:乙個鍊錶*/
intlenlist
(list)
;//鍊錶節點個數計算
/*返回鍊錶的節點個數。引數:乙個鍊錶*/
intdelementlist
(list,
int)
;//刪除列表元素
/*刪除某個鍊錶值。引數:乙個鍊錶,乙個下標*/
intemptylist
(list)
;//清空鍊錶
/*把鍊錶清空。引數:乙個鍊錶*/
#endif
list.c檔案(編譯時需要包含)
鍊錶adt標頭檔案list.h的實現檔案
#include
"list.h"
#include
list newlist
(void
)//新建乙個初始化鍊錶
intnewdata
(list linkedlist,listdata data)
//給鍊錶加入新資料
linkedlist->head->next = newnode;
//把新節點寫到head的下乙個節點
}else
linkedlist->end->next = newnode;
//把新節點附加在尾節點後
linkedlist->end = newnode;
//最新增入節點設為尾節點
linkedlist->end->next =
null
;//將尾節點的next指標設為null
linkedlist->len +=1
;//長度加1
return0;
}listdata getvalue
(list linkedlist,
int index)
//取煉錶值
intdelementlist
(list linkedlist,
int index)
//刪除鍊錶值
intlenlist
(list linkedlist)
//鍊錶節點個數計算
intemptylist
(list linkedlist)
//清空鍊錶
linkedlist->head =
null
;//重新初始化
linkedlist->end =
null
; linkedlist->len =0;
return0;
}int
deletelist
(list linkedlist)
//釋放整個鍊錶
可變長度字串
#include
#include
"list.h"
void
get_str
(list)
;//從輸入端獲得字串
intmain
(void
)printf
("\n");
/*清空*/
emptylist
(str)
;//清空str,迎接下一次迴圈
}deletelist
(str)
;//最後刪除str
return0;
}void
get_str
(list str)
}
鍊錶ADT實現 C語言 2018 3 11
include include define name to str name name 定義結點及結構體指標,結構體指標linklist為煉表頭結點指標 typedef struct lnodelnode,linklist 結構體指標 初始化鍊錶 lnode init ll 在第pos個結點之前插...
鍊錶ADT實現
鍊錶煉表有一系列不必再記憶體中連續的結構組成,不需要使用位址連續的儲存單元。它是通過 鏈 來建立邏輯關係的,因此在對鍊錶進行插入,刪除操作時不需要移動元素,而只需要修改指標即可。鍊錶分類 按是否包含指向前繼的指標可分為單鏈表和雙向鍊錶 按是否成環狀可以分為迴圈鍊錶和非迴圈鍊錶。由於連表示離散的分布在...
c語言 鍊錶 C語言鍊錶例項 玩轉鍊錶
下圖為最一簡單鍊錶的示意圖 第 0 個結點稱為頭結點,它存放有第乙個結點的首位址,它沒有資料,只是乙個指標變數。以下的每個結點都分為兩個域,乙個是資料域,存放各種實際的資料,如學號 num,姓名 name,性別 和成績 score 等。另乙個域為指標域,存放下一結點的首位址。鍊錶中的每乙個結點都是同...