查看完整版本: 儲存池問題(資料結構)
頁: [1]

boxwayne444 發表於 2017-5-28 04:15 PM

儲存池問題(資料結構)

本帖最後由 boxwayne444 於 2017-5-28 04:25 PM 編輯

(1)建立儲存池的程式

這裡的問題是
我看得懂程式是從末段往回建n個節點
那我可不可以從第一個節點開始建n個節點
avail在指向第一個節點結果不是一樣
這是我的疑問?

(2)書上寫儲存池的取得一個節點的程式為:

這裡覺得很奇怪為什麼p的link不用指向NULL
不是p指向avail第一個節點然後拿出來用嗎?
沒加NULL不就變成整個儲存池都出來
這是有沒加NULL結果
https://a474.static-file.com:8000/data/attachment/forum/201705/28/162204tptgwpjznriti5rg.png
有加NULL
https://a474.static-file.com:8000/data/attachment/forum/201705/28/162205id8djeee0bpbc3e3.png

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

boxwayne444 發表於 2017-5-28 04:22 PM

這是有沒加NULL結果

有加NULL

joebin 發表於 2017-5-30 02:14 AM

建議你貼上詳細一點的程式碼
不然要猜你的變數是什麼意義
還有你連數字怎印的都沒有寫
看不懂你要問的問題所在

boxwayne444 發表於 2017-5-30 04:33 PM

本帖最後由 boxwayne444 於 2017-5-30 04:37 PM 編輯



補充內容 (2017-5-30 04:40 PM):
不好意思試了好幾次正的圖傳上來都變歪的

joebin 發表於 2017-6-1 10:02 AM

資料結構分成兩個部分,一個是建樹一個是取值
單列建樹的方法如你只上所述有從後面建樹跟從前面建樹這兩種
兩者建樹的架構都會是
首項->中間項->末項->NULL
當然你也可以做末項往首項link,但這結果其實只是樹列翻轉而已
末項->中間項->首項->NULL

在做取值動作時會從手項依序往末項找,但程式不知道何者為末項
如果link指向NULL代表該項為末項,至於你所提的為何首項的link不為NULL
如果首項的link為NULL,沒有pointer會指向中間項
破壞了原先樹列結構,也會導致garbage生成,會佔用空間且無法去除
雖然你這次取一個值可以正常取得,但接下來你要取其他值便不知怎取
所以一般在做取值動作時會用一個counter,類似array index那種概念
或是比對DataType決定是否取該項的值...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>
頁: [1]