欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2679|回復(fù): 0
收起左側(cè)

II C語言之后的數(shù)據(jù)結(jié)構(gòu) 1

[復(fù)制鏈接]
ID:60076 發(fā)表于 2014-4-29 20:14 | 顯示全部樓層 |閱讀模式
     到目前為止C語言告一段落快半個(gè)月了,總體來說通過幾個(gè)月攻略C語言總算是把它們搞定了,包括C后期的多重指針、多維數(shù)組、文件的操作、預(yù)處理指令以及自定義的結(jié)構(gòu)體struct、聯(lián)合union、枚舉enum等等。所以說到了目前為止可以脫離書本寫C程序了,但是現(xiàn)在攻略的數(shù)據(jù)結(jié)構(gòu)是一大難題,數(shù)據(jù)結(jié)構(gòu)是一座很高的山,也是最難掌握的知識(shí),又很重要,相當(dāng)于編程核心,基本上所有編程語言都離不開它。通過了解了半個(gè)月,我認(rèn)為難度比其他方面的應(yīng)用像數(shù)據(jù)庫Qracle、UC、VC、程序算法、QT、MFC都要大,事實(shí)也是如此,原因在于理論上很簡單,但真的寫起數(shù)據(jù)結(jié)構(gòu)的程序就有點(diǎn)犯難了,不好理解的說。比如最近這些時(shí)寫個(gè)比較基礎(chǔ)的鏈表都練習(xí)了好幾天,總是出錯(cuò),各種問題,各種警告,要么就是很常見的段錯(cuò)誤,看起來一個(gè)簡單的鏈表都要寫一百多行代碼,除了主函數(shù)之外也就只有創(chuàng)建鏈表、刪除鏈表、插入鏈表、輸入輸出鏈表函數(shù),一共五個(gè)函數(shù)需要調(diào)用,更何況深入的還有置空鏈表、銷毀鏈表、判斷鏈表是否為空、計(jì)算鏈表元素個(gè)數(shù)、鏈表元素關(guān)系函數(shù)等等。看著它們心情實(shí)在是“太好了”,好到直接昏倒的地步。就一個(gè)沒有雙向循環(huán)的鏈表都這么糾結(jié),更何況別的呢。
       數(shù)據(jù)結(jié)構(gòu)常見的有:集合、一對一的線性結(jié)構(gòu)、一對多的樹形結(jié)構(gòu)和多對多的圖形結(jié)構(gòu),而最簡單的就是線性結(jié)構(gòu)了,換句話說線性結(jié)構(gòu)的鏈表、堆棧和隊(duì)列是最簡單最基本的,很多人不得不吐槽了這還是最簡單的,我暈吧。攻略完C語言之后數(shù)據(jù)結(jié)構(gòu)我整體簡單的看了看,理論還是蠻簡單的,都通俗易懂,但是真的寫程序的話還真是不好寫啊!一對一的寫起來都很困難,更何況以后的關(guān)系是一對多甚至多對多的元素關(guān)系。沒辦法級(jí)別不夠,級(jí)別低的就是做不了級(jí)別高的事,而級(jí)別高的可以做級(jí)別低的事,這是我之前玩網(wǎng)游也好還是單機(jī)也好最喜歡說的一句話。練級(jí)就是這么產(chǎn)生的,所以也就不難理解為什么全世界的所有人無時(shí)不刻都在練自己的各種級(jí)別了。今天升一級(jí),明天爭取再升一級(jí),很多練級(jí)狂最常說的話大概就是這了。
       線性結(jié)構(gòu)是一對一的形式,存儲(chǔ)方式是一個(gè)順序的地址,這一點(diǎn)和數(shù)組一樣,線性結(jié)構(gòu)最常見的是堆棧、隊(duì)列和鏈表。生活中的蓋房子相當(dāng)于就是堆棧,先從下面開始建起,然后再建上面的,于是高樓就建好了,反過來拆房子是從最高處開始拆最后拆一樓,樓層之間是一個(gè)接著一個(gè)的關(guān)系,堆棧就是這樣的東西,先進(jìn)后出,后進(jìn)先出的原則,堆棧中從第一個(gè)元素開始,每個(gè)元素的指針指向下一個(gè)元素,反過來下一個(gè)元素的地址就是上一個(gè)元素的指針變量,于是程序中就形成了堆棧;而另一種生活中的排隊(duì)就是隊(duì)列,也是一個(gè)接著一個(gè),前后之間都有關(guān)系,而且和堆棧不同的是先進(jìn)先出,后進(jìn)后出的關(guān)系,排列方式和堆棧一樣,隊(duì)列中從第一個(gè)元素開始,到最后一個(gè)元素為空,于是就構(gòu)成了隊(duì)列。鏈表相當(dāng)于比之前的順序表多了節(jié)點(diǎn),相當(dāng)于把線性表分成幾組的模式,組和組之間是節(jié)點(diǎn),而每組中的元素是順序儲(chǔ)存的,但組和組并不連接,地址是斷開的,每一組的最后一個(gè)元素的指針指向下一組的第一個(gè)元素,因此產(chǎn)生了節(jié)點(diǎn),因此使用鏈表更效率,但查找的效率卻沒有線性好(看得出所有東西都有缺點(diǎn),沒有完美的)。
       樹形結(jié)構(gòu)是一對多的形式,存儲(chǔ)方式是按照樹形排序的方式來存入連續(xù)的地址中,比如最常見的是前序排列、中序排列和后序排列,這個(gè)都好說,簡單的要命(小學(xué)生都可以學(xué)會(huì)的),樹形結(jié)構(gòu)最常見的是二叉樹,多叉樹。現(xiàn)實(shí)中很多東西都是樹形結(jié)構(gòu),比如家譜表、一顆樹的樹枝。這么好懂的東西,難就難在寫程序,樹的種類比起線性更加的多,而且更加的雜,程序更加的長,不僅僅和線性結(jié)構(gòu)有一樣的函數(shù)操作,而且還增加了新東西,總之比線性表更上一層,如果線性表程序都寫不好,那這個(gè)就......呵呵,相當(dāng)于加法不會(huì)去做乘法。而圖形結(jié)構(gòu)呢,多對多的形式,比如生活中的地圖線路,比之前的樹形結(jié)構(gòu)更加復(fù)雜,程序的話就更不用說了,指針用著都累死你,處處都是指針,二級(jí)指針,網(wǎng)狀結(jié)構(gòu)的關(guān)系太多,所以指針也用的更頻繁,亂指哈哈,都可以迷路了,簡單的看了看相關(guān)的程序,更加暈。數(shù)據(jù)結(jié)構(gòu)最難的應(yīng)該就是它了,差不多把它能完全掌握的話數(shù)據(jù)結(jié)構(gòu)也就非常高端大氣上檔次了。
       所以有時(shí)我在想數(shù)據(jù)結(jié)構(gòu)理解就過吧,簡簡單單弄懂基本的程序就行了, 還是先攻略C++靠譜點(diǎn)。畢竟先會(huì)程序再會(huì)應(yīng)用嘛。同理就像先會(huì)如何用烤箱,再才能烤出西點(diǎn)出來,前者是理論后者是應(yīng)用,說起來還是做西點(diǎn)簡單,需要的也就是體力而已,再要點(diǎn)小技巧,最主要的還是用心做就行了。而程序就不同,小技巧根本靠不住。要大技巧!
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表