數(shù)據(jù)結(jié)構(gòu)與算法365天特訓(xùn)營-線性表

線性表

????????線性表是由n(n\geq 0)個(gè)相同類型的數(shù)據(jù)元素組成的有限序列茄茁,它是最基本魂贬、最常用的一種線性結(jié)構(gòu)。顧名思義裙顽,線性表就像是一條線付燥,不會分叉。線性表有唯一的開始和結(jié)束锦庸,除了第一個(gè)元素外机蔗,每一個(gè)元素都有唯一的直接前驅(qū),除了最后一個(gè)元素外甘萧,每一個(gè)元素都有唯一的直接后繼

前驅(qū)和后繼

順序表

????????順序表是順序存儲方式梆掸,即邏輯上相鄰的數(shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲位置也是相鄰的扬卷。順序存儲方式,元素存儲是連續(xù)的酸钦,中間不允許有空怪得,可以快速定位第幾個(gè)元素,但是插入卑硫、刪除時(shí)需要移動大量元素徒恋。

順序表

鏈表

????????鏈表是線性表的鏈?zhǔn)酱鎯Ψ绞剑壿嬌舷噜彽臄?shù)據(jù)在計(jì)算機(jī)內(nèi)的存儲位置不一定相鄰欢伏。

鏈表

單鏈表

????????單鏈表是鏈表中的一種形式入挣,那么如何定義單鏈表:


單鏈表結(jié)構(gòu)體

????????單鏈表一般由兩個(gè)變量組成,data變量代表單鏈表中存儲的值硝拧,next變量代表單鏈表中指向下一個(gè)節(jié)點(diǎn)的指針径筏。以下兩張圖分別是不帶哨兵節(jié)點(diǎn)的單鏈表和帶哨兵節(jié)點(diǎn)的單鏈表。

不帶哨兵的單鏈表

帶哨兵節(jié)點(diǎn)的單鏈表

單鏈表的操作

  • 初始化
  • 創(chuàng)建
  • 查找障陶、取值
  • 插入
  • 刪除

初始化

初始化

????????初始化一般就是聲明頭指針滋恬。

創(chuàng)建

????????創(chuàng)建的方式,一般有兩種頭插法尾插法

頭插法

尾插法

//L為頭結(jié)點(diǎn)抱究,r為最后一個(gè)節(jié)點(diǎn)恢氯,s為新增節(jié)點(diǎn)
//頭插法的偽代碼
s->next = L->next
L->next = s

//尾插法的偽代碼
r -> next = s

取值、查找

????????單鏈表的取值操作一般都是從頭結(jié)點(diǎn)往后進(jìn)行遍歷,時(shí)間復(fù)雜度為O(n)勋拟。


取值和查找
//頭指針L遏暴, j為所要取的數(shù),p為當(dāng)前指針, v為查找的值
//取值偽代碼
i = 0;
p = L ->next;
while(p != null || i != j){
  p = p ->next;
  i = i + 1;
}

//查找偽代碼
i = 0;
p = L ->next;
while(p != null && p ->value != v){
  i++;
  p = p ->next;
}

插入

插入

????????單鏈表的插入非常簡便指黎,只需將插入節(jié)點(diǎn)的next指針指向后一個(gè)節(jié)點(diǎn)朋凉,前一個(gè)節(jié)點(diǎn)的next指針指向插入的節(jié)點(diǎn)。時(shí)間復(fù)雜度O(1)醋安。

//e為插入節(jié)點(diǎn)杂彭,p指針指向當(dāng)前插入的節(jié)點(diǎn)
e ->next = p ->next;
p ->next = e;

刪除

刪除

????????單點(diǎn)表的刪除操作也非常簡便,將當(dāng)前刪除的節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)的next指針指向刪除節(jié)點(diǎn)的next指針指向的節(jié)點(diǎn)就好了吓揪。時(shí)間復(fù)雜度O(1)亲怠。

//p為刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn),q為刪除節(jié)點(diǎn)
p ->next = q ->next

雙向鏈表

雙向鏈表

????????雙向鏈表與單鏈表相比多了一個(gè)前驅(qū)柠辞。所以在操作中团秽,它比單鏈表還多了一個(gè)privor指針操作。舉個(gè)插入例子:

//p為當(dāng)前節(jié)點(diǎn)叭首,a為插入的節(jié)點(diǎn)
p ->next ->privor = a
a ->next = p ->next
a ->privor = p
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末习勤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子焙格,更是在濱河造成了極大的恐慌图毕,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件眷唉,死亡現(xiàn)場離奇詭異予颤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冬阳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蛤虐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肝陪,你說我怎么就攤上這事驳庭。” “怎么了见坑?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵嚷掠,是天一觀的道長。 經(jīng)常有香客問我荞驴,道長不皆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任熊楼,我火速辦了婚禮霹娄,結(jié)果婚禮上能犯,老公的妹妹穿的比我還像新娘。我一直安慰自己犬耻,他們只是感情好踩晶,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枕磁,像睡著了一般渡蜻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上计济,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天茸苇,我揣著相機(jī)與錄音,去河邊找鬼沦寂。 笑死学密,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的传藏。 我是一名探鬼主播腻暮,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼毯侦!你這毒婦竟也來了哭靖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤叫惊,失蹤者是張志新(化名)和其女友劉穎款青,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霍狰,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年饰及,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔗坯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡燎含,死狀恐怖宾濒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屏箍,我是刑警寧澤绘梦,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站赴魁,受9級特大地震影響卸奉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颖御,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一榄棵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦疹鳄、人聲如沸拧略。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垫蛆。三九已至,卻和暖如春腺怯,著一層夾襖步出監(jiān)牢的瞬間袱饭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工瓢喉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宁赤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓栓票,卻偏偏與公主長得像决左,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子走贪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容