C語言資料結構 4 鏈式儲存線性表

2021-09-27 10:32:47 字數 1805 閱讀 2740

但是資料這種儲存結構存在一些問題:

咋辦捏,有乙個很樸素的想法就是,讓前面乙個人記住後面乙個人,不用關心整體,只要前後關聯就ok。這種資料結構即為鏈式儲存線性表。

因為c語言支援指標啊,讓前面乙個記住後面乙個,太簡單了啊,直接讓前面乙個的指標指向後面乙個完事。那第乙個咋辦捏,第乙個沒有前面乙個啊,那也麼事,我們直接定義乙個頭部指向第乙個元素,也就是說頭部實際上不是線性表的資料部分,但是它能把鏈式線性表關聯出來。

就像火車頭,雖然不拉乘客,但是能帶著乘客去他們想去的地方。這個比喻實在太形象了,厲害炸了~

此處跟順序線性表一模一樣,因為都是線性表嘛,功能一樣,只是儲存結構不一樣。

顯示線性表元素個數

列出線性表的所有元素

獲取指定位置元素

在指定位置插入元素

刪除指定位置元素

清空線性表

話不多說,說多了上頭。酒不多喝,喝多了會難受,直接上**~

ps:我自己測試沒發現bug,但是不能保證肯定沒有bug…保佑我~!

/*

* 鏈式儲存線性表*/#

include

// 線性表的節點結構體

typedef

struct

node;

// 獲取元素個數

intgetcount

(node *head)

return count;

}// 顯示所有元素

void

printlist

(node *head)

}// 獲取指定位置元素,返回值放入result指向元素,注意位置從0開始

intgetdata

(node *head,

int index,

int*result)

node* p = head;

//定義乙個指標首先指向頭結點

while

(p->next !=

null

) i++;}

if(i >= index)

//位置超限

return1;

//1表示成功

}// 插入元素

intinsertdata

(node *head,

int index,

int input)

if(index ==0)

//第乙個位置插入元素

node* p = head;

//定義乙個指標首先指向頭結點

while

(p->next !=

null)}

if(i == index)

//最後乙個後面追加

else

return1;

}// 刪除指定位置元素

intdeletedata

(node *head,

int index)

node* p = head;

//定義乙個指標首先指向頭結點

node* front = head;

//記錄前乙個元素

while

(p->next !=

null

) i++;}

if(i >= index)

//位置超限

return1;

//1表示成功

}// 清空所有元素

intcleardata

(node *head)

head->next =

null

;return1;

}// 入口

intmain()

資料結構 線性表的鏈式儲存結構(C語言)

線性表的鏈式儲存結構之鍊錶 實現鍊錶的插入,刪除 include include typedef int elemtype typedef int status typedef struct node node typedef struct node linklist 插入資料 status lis...

資料結構 鏈式儲存線性表

鏈式儲存結構的線性表 簡稱為鍊錶 將採用一組位址任意的儲存單元存放線性表中的資料元素,鏈式結構的線性表不會按線性的邏輯順序來儲存資料元素,它需要在每乙個資料元素裡儲存乙個引用下乙個資料元素的引用。優點 插入 刪除元素快,充分利用計算機記憶體空間 缺點 查詢元素需要整體遍歷,空間開銷大 單鏈表 cre...

資料結構4 線性表的鏈式儲存結構(2)

單鏈表的題目 1 單鏈表的反轉 思路 借助三個指標p1,p2,p3。讓p1 head p2 p1 nect p3 p2 next 之後將p2 next p1 然後將p1,p2 p3順序後移,一直到p3為空就會將鍊錶反轉。特殊情況陣列中只有沒有或者只有乙個節點時,直接返回就可以。void linkli...