c++ - 為什麼鍊錶顯示的子函式要特地弄一個變數
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-16 13:29:38
0
2
629
void display(link head)
{
    link p;
    p=head;
    if(p==NULL)
    printf("\nlist is empty");
    else do
    {
        printf("%d",p->data);
        p=p->next;
        
    }while(p!=NULL);
 } 

書上說思考為什麼要把head設定成p而不是直接用我沒看出來為什麼 為什麼啊?
link是鍊錶的指標

曾经蜡笔没有小新
曾经蜡笔没有小新

全部回覆(2)
習慣沉默

head四個字元比p長。
head意義特指頭部節點,而遍歷鍊錶時用的指標會指向鍊錶的每一個節點,用head那意義不合適了。

滿天的星座

@任衛 已經說了一個原因,因為我們並不是要用"head"來遍歷整個鍊錶。
除了這個原因,我還能想到一個原因,也就是我們需要保留一份"head"。在這個函數中,我們並不需要再次使用"head",但對於其他一些複雜點的函數,我們可能在遍歷完鍊錶後還會想用到"head"。如果我們不用"p"而直接用"head"來遍歷鍊錶的話,我們就沒辦法再訪問頭結點了。因此,我們需要保存一份"head"也就是用p = head,而不是直接用「head」來遍歷。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板