第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

關(guān)于數(shù)據(jù)結(jié)構(gòu)單鏈表頭結(jié)點(diǎn)是否可以用指針替換?

關(guān)于數(shù)據(jù)結(jié)構(gòu)單鏈表頭結(jié)點(diǎn)是否可以用指針替換?

單鏈表定義時(shí)要聲明一個(gè)頭結(jié)點(diǎn),但是這個(gè)頭結(jié)點(diǎn)的data域是不使用的,只用其next域,那么這個(gè)頭結(jié)點(diǎn)和一個(gè)普通指針有何區(qū)別?浪費(fèi)了一個(gè)data域的空間?我的想法是直接用一個(gè)指針作為頭結(jié)點(diǎn),原先的頭結(jié)點(diǎn)作為存儲(chǔ)數(shù)據(jù)的第一個(gè)單元。頭結(jié)點(diǎn)定義:LinkList h;這個(gè)h所指向的是頭結(jié)點(diǎn),按照書本和老師講的規(guī)定是不儲(chǔ)存數(shù)據(jù),就用到一個(gè)next域,現(xiàn)在,我讓這個(gè)data域也起作用,儲(chǔ)存數(shù)據(jù),h這個(gè)指針本身作為頭結(jié)點(diǎn)。當(dāng)頭結(jié)點(diǎn)空時(shí)原:h->next=NULL;現(xiàn):h=NULL;插入數(shù)據(jù)時(shí),原:p=(LNode*)malloc(sizeof(LNode)); p->data=e;h->next=p;現(xiàn):p=(LNode*)malloc(sizeof(LNode)); p->data=e;h=p;其他操作以此類推。我想問一下我這個(gè)想法有沒有問題,想搞清楚,問了老師也沒怎么說清楚,求解。
查看完整描述

1 回答

?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

如果不用空的header節(jié)點(diǎn)的話,要修改頭節(jié)點(diǎn),函數(shù)需要傳入header的地址而不是header本身(header此處已經(jīng)是指針,也就是說要傳入指針的指針)。
比如,

LNode *h, *p;


/* 從第一個(gè)節(jié)點(diǎn)開始刪除 */

void del_front(Node** header) 

{

    ...

}


p=(LNode*)malloc(sizeof(LNode));

p->data=e;

h=p;


del_front(&h);

在上面這個(gè)例子中,你刪除了老的頭結(jié)點(diǎn),那么新的頭結(jié)點(diǎn)地址也就變了,也就是說h的值也應(yīng)該跟著變。要改變指針的值,你只傳入指針h給函數(shù)的話是不能修改h的值的(這是值傳入),我們需要通過給函數(shù)傳入指向指針的指針才能修改h的值,因此這么做就比較麻煩。

如果是將頭結(jié)點(diǎn)作為特殊節(jié)點(diǎn)的話,我們即使從第一個(gè)節(jié)點(diǎn)開始刪除,我們只需要傳入頭結(jié)點(diǎn)h給刪除的函數(shù),然后這個(gè)函數(shù)修改h->next就能解決問題了。所以這么做,維護(hù)性應(yīng)該是要好些的。


查看完整回答
反對 回復(fù) 2018-10-29
  • 1 回答
  • 0 關(guān)注
  • 1185 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)