《C與指針》讀書(shū)筆記十
與很多介紹C語(yǔ)言教材不同之處,在《C與指針》的第十二章介紹了一些關(guān)于《數據結構》的內容----鏈表。并且介紹了鏈表的插入、刪除、初始化等操作。到這里應該明白了一門(mén)計算機語(yǔ)言的偉大之處不在于語(yǔ)言的本身。我當年在學(xué)校學(xué)習完P(guān)ascal覺(jué)得語(yǔ)言好像沒(méi)有什么太大用處?,F在想來(lái)不是語(yǔ)言沒(méi)有用,而是我并沒(méi)有使用語(yǔ)言來(lái)解決實(shí)際中問(wèn)題。所以名牌大學(xué)與普通大學(xué)不同之處,不是授予學(xué)生的基本知識不同,而是啟蒙方法不同。
本文引用地址:http://dyxdggzs.com/article/201608/295973.htm鏈表是由節點(diǎn)組成的,每個(gè)節點(diǎn)組成,節點(diǎn)必須包括兩大部分,一是節點(diǎn)的內容,另外是指向下一節點(diǎn)的指針。也就下一節點(diǎn)的地址。特殊兩個(gè)節點(diǎn)是鏈表頭(root)和鏈表尾。鏈表頭只是有一個(gè)指針,指向鏈表第一個(gè)節點(diǎn),最后一個(gè)節點(diǎn)的指針指向NULL,標志該鏈表結束。
與隊列相比鏈表有很大優(yōu)勢。鏈表不需要一塊地址連續的空間。因為這陣可以連接起各個(gè)節點(diǎn)。使得每個(gè)節點(diǎn)在物理上地址上處于不連續的離散狀態(tài)。但是在邏輯上卻是處于連續的地址空間。這也是程序員在編程過(guò)程中偏向于使用指針的原因吧!在使用鏈表過(guò)程中可以深刻體會(huì )到指針、結構體、地址之間巧妙關(guān)系。如果能有體會(huì ),那么高效的使用指針已經(jīng)不是問(wèn)題了。編程不是單純語(yǔ)言問(wèn)題。其實(shí)是思維、機器、問(wèn)題三方面的結合體。處理好這三方面關(guān)系問(wèn)題即可得到完美的解決。
書(shū)中介紹了鏈表的創(chuàng )建、插入、刪除等。如果在隊列中某個(gè)位置插入一個(gè)節點(diǎn),需要將該位置以后節點(diǎn)向后移動(dòng)。這在數據量大時(shí)消耗的時(shí)間非??捎^(guān)的。但是鏈表只需要修改兩個(gè)節點(diǎn)的指針即可完成。在數據量比較大時(shí)顯得非常高效。刪除鏈表也是一樣的。隊列需要移動(dòng)節點(diǎn),鏈表只需修改上一節點(diǎn)的指針。如果后銷(xiāo)毀該節點(diǎn)即可。
一般單鏈表的遍歷只能單向進(jìn)行。每次遍歷只能從鏈表頭開(kāi)始,到鏈表尾結束。為了提高遍歷自由度,作者介紹了雙向鏈表??梢詮囊粋€(gè)節點(diǎn)任意訪(fǎng)問(wèn)其前趨和后趨節點(diǎn)。
一個(gè)問(wèn)題總會(huì )帶來(lái)矛盾,雙鏈表解決表里問(wèn)題,但是同時(shí)在插入、刪除方面帶來(lái)了副作用。因為同事要維護兩個(gè)指針。解決實(shí)際問(wèn)題《數據結構》是非常重要的課程。如果能將其中理論用于實(shí)踐那么將事半功倍!
評論