用c語言實現基本資料結構(鍊錶)

2021-09-11 17:43:42 字數 1837 閱讀 9182

感覺寫鍊錶比較考驗對指標的理解。。。

下圖可以方便對鍊錶中指標進行理解

list* l;

//新建鍊錶指標,沒有指向任何東西

l = (list *)malloc

(sizeof

(list)

)//從堆中分配list大小的記憶體空間,賦給l,l就有了指向的空間。

*l //l指向的結構體,一般不用這種寫法(主要是不方便)

l->data //l指向的結構體中的資料

l->next //l指向的結構體中的指標next,乙個指標型別資料

//c語言的鍊錶中,乙個節點的意思就是乙個結構體。

首先是單鏈表

結構體如下

typedef

struct linklistlist;

方法如下

void

initlist

(list *l)

;//初始化鍊錶(建立頭節點)

void

createlist

(list *l)

;//建立鍊錶,先輸入待輸入資料個數,再輸入資料

list*

findnode

(list *l,

int n)

;//找到第n個節點(從1開始)

void

insertnode

(list* l,

int n,

int data)

;//在第n個節點後插入節點

intlistlength

(list* l)

;//返回鍊錶長度

intdelnode

(list *l,

int n)

;//刪除第n個節點

void

printflist

(list *l)

;//輸出所有節點資料

完整**如下

#include

#include

typedef

struct linklistlist;

void

initlist

(list *l)

}void

createlist

(list *l)

for(

int i =

0; i < len; i++

)printf

("end input!\n");

}list*

findnode

(list *l,

int n)

p = p->next;

}return p;

}void

insertnode

(list* l,

int n,

int data)

intlistlength

(list* l)

return len;

}int

delnode

(list *l,

int n)

list *p = pre->next;

pre->next = p->next;

free

(p);

return1;

}void

printflist

(list *l)

printf

("\n");

}

測試**如下

#include

"mylist.h"

intmain()

基本資料結構 鍊錶

鍊錶 鍊錶與陣列的區別是鍊錶中的元素順序是有各物件中的指標決定的,相鄰元素之間在物理記憶體上不一定相鄰。採用鍊錶可以靈活地表示動態集合。鍊錶有單鏈表和雙鏈表及迴圈鍊錶。書中著重介紹了雙鏈表的概念及操作,雙鏈表l的每乙個元素是乙個物件,每個物件包含乙個關鍵字和兩個指標 next和prev。鍊錶的操作包...

基本資料結構 鍊錶

談到鍊錶之前,先說一下線性表。線性表是最基本 最簡單 也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表有兩種儲存方式,一種是順序儲存結構,另一種是鏈式儲存結構。順序儲存結構就是兩個相鄰的元素在記憶體中也是相鄰的...

python實現基本資料結構 鍊錶

class node object data 資料段 next 指標段 def init self,value,next node self.value value self.next next def repr self 用來定義node的字元輸出 print 為輸出data return str...