新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 《C與指針》讀書(shū)筆記十

《C與指針》讀書(shū)筆記十

作者: 時(shí)間:2016-08-24 來(lái)源:網(wǎng)絡(luò) 收藏

  與很多介紹語(yǔ)言教材不同之處,在《》的第十二章介紹了一些關(guān)于《數(shù)據(jù)結(jié)構(gòu)》的內(nèi)容----鏈表。并且介紹了鏈表的插入、刪除、初始化等操作。到這里應(yīng)該明白了一門(mén)計(jì)算機(jī)語(yǔ)言的偉大之處不在于語(yǔ)言的本身。我當(dāng)年在學(xué)校學(xué)習(xí)完P(guān)ascal覺(jué)得語(yǔ)言好像沒(méi)有什么太大用處。現(xiàn)在想來(lái)不是語(yǔ)言沒(méi)有用,而是我并沒(méi)有使用語(yǔ)言來(lái)解決實(shí)際中問(wèn)題。所以名牌大學(xué)與普通大學(xué)不同之處,不是授予學(xué)生的基本知識(shí)不同,而是啟蒙方法不同。

本文引用地址:http://butianyuan.cn/article/201608/295973.htm

  鏈表是由節(jié)點(diǎn)組成的,每個(gè)節(jié)點(diǎn)組成,節(jié)點(diǎn)必須包括兩大部分,一是節(jié)點(diǎn)的內(nèi)容,另外是指向下一節(jié)點(diǎn)的。也就下一節(jié)點(diǎn)的地址。特殊兩個(gè)節(jié)點(diǎn)是鏈表頭(root)和鏈表尾。鏈表頭只是有一個(gè),指向鏈表第一個(gè)節(jié)點(diǎn),最后一個(gè)節(jié)點(diǎn)的指針指向NULL,標(biāo)志該鏈表結(jié)束。

  與隊(duì)列相比鏈表有很大優(yōu)勢(shì)。鏈表不需要一塊地址連續(xù)的空間。因?yàn)檫@陣可以連接起各個(gè)節(jié)點(diǎn)。使得每個(gè)節(jié)點(diǎn)在物理上地址上處于不連續(xù)的離散狀態(tài)。但是在邏輯上卻是處于連續(xù)的地址空間。這也是程序員在編程過(guò)程中偏向于使用指針的原因吧!在使用鏈表過(guò)程中可以深刻體會(huì)到指針、結(jié)構(gòu)體、地址之間巧妙關(guān)系。如果能有體會(huì),那么高效的使用指針已經(jīng)不是問(wèn)題了。編程不是單純語(yǔ)言問(wèn)題。其實(shí)是思維、機(jī)器、問(wèn)題三方面的結(jié)合體。處理好這三方面關(guān)系問(wèn)題即可得到完美的解決。

  書(shū)中介紹了鏈表的創(chuàng)建、插入、刪除等。如果在隊(duì)列中某個(gè)位置插入一個(gè)節(jié)點(diǎn),需要將該位置以后節(jié)點(diǎn)向后移動(dòng)。這在數(shù)據(jù)量大時(shí)消耗的時(shí)間非??捎^的。但是鏈表只需要修改兩個(gè)節(jié)點(diǎn)的指針即可完成。在數(shù)據(jù)量比較大時(shí)顯得非常高效。刪除鏈表也是一樣的。隊(duì)列需要移動(dòng)節(jié)點(diǎn),鏈表只需修改上一節(jié)點(diǎn)的指針。如果后銷(xiāo)毀該節(jié)點(diǎn)即可。

  一般單鏈表的遍歷只能單向進(jìn)行。每次遍歷只能從鏈表頭開(kāi)始,到鏈表尾結(jié)束。為了提高遍歷自由度,作者介紹了雙向鏈表??梢詮囊粋€(gè)節(jié)點(diǎn)任意訪(fǎng)問(wèn)其前趨和后趨節(jié)點(diǎn)。

  一個(gè)問(wèn)題總會(huì)帶來(lái)矛盾,雙鏈表解決表里問(wèn)題,但是同時(shí)在插入、刪除方面帶來(lái)了副作用。因?yàn)橥乱S護(hù)兩個(gè)指針。解決實(shí)際問(wèn)題《數(shù)據(jù)結(jié)構(gòu)》是非常重要的課程。如果能將其中理論用于實(shí)踐那么將事半功倍!



關(guān)鍵詞: C 指針

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉