寫給初學資料結構的同學之(線性表(順序表,鍊錶))

2021-08-27 02:29:54 字數 1317 閱讀 6160

昨天的貼了一些雙鏈表的基本操作(實現**),對於一些上過課,知道了一些基本概念的同學,我相信還是有一點小小的幫助的。但是,這樣的話,對於那些基本概念讀不了解的童鞋,我覺得我的那些實現**就會有點肯跌了~~~

所以,這次,我會從基本概念開始說,但是我還是會以**為主

,因為我覺得,基本概念知道的再多,也不急會幾行**

~~~~~~~~~~~~~~~

進入正題:

線性表:

好吧,肯跌了,我還真的說不出它的定義,但我從它名字,我會知道,它是線性的(好像廢話),說的專業點就是:

除第乙個元素外,其他每乙個元素有乙個且僅有乙個直接前驅;

除最後乙個元素外其他每乙個元素有乙個且僅有乙個直接後繼。

這就是線性表的基本特徵了。

那順序表和煉表有是什麼呢?

順序表和煉表都是線性表。

首先說下順序表:其實很簡單,就是像陣列一樣,資料存放在連續的儲存空間中。

用陣列就能很方便的實現這種結構。

所以,因為儲存結構的順序與邏輯結構的順序完全一致,其最大優點就是可以方便地隨機訪問表中任乙個結點。

就像陣列可以直接用下表來對陣列進行操作。

但是,這乙個又有乙個很大的缺點:既然儲存結構的順序與邏輯結構的順序完全一致,那麼,當我們想在中間插入或者在中間刪除乙個資料的時候,我們就要將該位置以後的所有資料都向後移,或者向前移。效率就有點低了吧。還有乙個問題:當我們定義乙個陣列的什麼時候,比如:int str[n];n是乙個給定的數,也就是說,我要給他分配一塊固定的空間,那麼,當我們不知道要多少空間的時候,我們有可能會讓費空間,或者空間不夠用。

這樣就要說到鍊錶了,它是線性表的鏈結儲存表示可不連續地分布在記憶體中任何的位置。

鍊錶(單鏈表,雙鏈表,(迴圈,帶頭))

我這篇部落格就說說單鏈表了~~~~~

1.單鏈表結點:

typedef int nodedata;

typedef struct node

node;

本來不打算說的,後來想想,還是寫上去,只想推薦使用typedef

2.單鏈表的create,insert,remove,sort都不說了

3.我只想說下單鏈表的轉置(很多公司面試題都會問這個):

node * myreverse(node *head)

else

return front;

}}

這個應該還是很重要的,能完全熟練掌控最好,不能的話就背下來唄,反正也不長。

最後,還是 多畫畫圖,對學資料結構太有用了。

還有,說好的,以代號為住的,結果~~~~~~~~~~~~

mysql 線性表 資料結構之線性表

概要 參考 大話資料結構 把常用的基本資料結構梳理一下。線性表定義 線性表 list 零個或多個資料元素的有限序列。若將線性表記為 a 1,cdots,a a i,a cdots,a n 則表中 a 領先於 a i a i 領先於 a 稱 a 是 a i 的直接前驅元素,a 是 a i 的直接後繼元...

資料結構之線性表

從現在開始,我們開始討論如何實現一些常用的資料結構和其中的一些經典演算法.等把資料結構講完了.我可能會繼續討論vc 的程式設計只是以及vs平台下的c c 開發等等.呵呵.我們進入正題吧.我在這裡就只實現線性表的連表結構.當然了,這裡實際上包含了好多知識.我希望大家在引用的時候.一定要領悟裡面的一些變...

資料結構之線性表

線性表是具有相同特性的資料元素的乙個有限序列。該序列中所含元素的個數叫做線性表的長度,用n表示,n 0。當n 0時,表示線性表是乙個空表,即表中不包含任何元素。設序列中第i i表示位序 個元素為ai 1 i n 線性表的一般表示為 a1,a2,ai,ai 1,an include include d...