C語言鍊錶ADT

2021-10-22 22:13:40 字數 2793 閱讀 2399

這是乙個以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 等。另乙個域為指標域,存放下一結點的首位址。鍊錶中的每乙個結點都是同...