亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

學習c語言的一個疑問

學習c語言的一個疑問

C C# C++
不會說話的魚 2017-11-28 21:40:58
這是慕課網上邊的c語言結構體里面的課程,為什么第19行將p2->next 的指正指向了p1的地址,隨后又初始化p2,這樣不是直接吧p2->next的地址就不指向p1了不是么,求大神解答!
查看完整描述

1 回答

?
kevinZee

TA貢獻50條經驗 獲得超39個贊

他把p1p2換來換去看上去確實有點難理解。

他的意思其實就是創建一個鏈表,利用一個變量來緩存和不斷更新尾節點的指針

我在你這個函數的基礎上簡單調整了一下,可能更便于你的理解

struct?weapon?*?create(){

????struct?weapon?*?head?=?NULL;
????struct?weapon?*?tail?=?(weapon?*)?malloc(sizeof(struct?weapon));
????scanf("%d?%d",&(tail->price),&(tail->atk));
????int?n?=?0;
????while(tail->price?!=?0){
????????n++;
????????if(n?==?1){
????????????head?=?tail;
????????}else{
????????????//創建一個新的節點
????????????struct?weapon?*?new_tail?=?(weapon?*)?malloc(sizeof(struct?weapon));
????????????scanf("%d?%d",&(new_tail->price),&(new_tail->atk));
????????????new_tail->next?=?NULL;
????????????//將這個新節點和當前的尾節點相連
????????????tail->next?=?new_tail;
????????????//更新尾節點指針
????????????tail?=?new_tail;
????????}
????}

????return?head;
}


查看完整回答
1 反對 回復 2017-11-29
  • 不會說話的魚
    不會說話的魚
    我不明白的是tail->next=new_tail;tail = new_tail;他先設置了tail結構里面的next指針,然后又給tail進行一個初始化,這么一來的話tail->next這個設置不是被覆蓋了嗎?
  • kevinZee
    kevinZee
    tail是指針變量,是存放地址的,假設現在tail的值從1000H變為1010H,改變的是指針的指向,而不會改變1000H這個地址內的數據
  • 不會說話的魚
    不會說話的魚
    對的啊,但是現在tail->next=new_tail;tail = new_tail;里面tail->next的指向先設置成了new_tail;然后由tail=new_tail;這樣子不就是初始化了tail->next=new_tail->next了么,那這么以來鏈表的話就不能呼應了?。?/div>
  • 1 回答
  • 0 關注
  • 1477 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號