何在指標q指向的結點後面插入結點。該過程的步驟如下:(1)先建立一個新結點,並用指標p指向該結點。(2)將q指向的結點的next域的值(即q的後繼結點的指標)賦值給p指向結點的next域。(3)將p的值賦值給q的next域。透過以上3步就可以實現在連結串列中由指標q指向的結點後面插入p所指向的結點。可以透過圖1-5形象地展示出這一過程。圖1-5 向連結串列插入結點過程下面給出程式碼描述:1.void insertList(LinkList *list,LinkList q,ElemType e) /*當連結串列為空時*/ 10. else 16.} 上面的這段程式碼描述瞭如何在指標q指向的結點後面插入結點的過程。其過程包括以下幾步。(1)首先生成一個新的結點,大小為sizeof(LNode),用LinkList型別的變數p指向該結點。將該結點的資料域賦值為e。(2)接下來判斷連結串列是否為空。如果連結串列為空,則將p賦值給list,p的next域的值置為空。否則,將q指向的結點的next域的值賦值給p指向結點的next域,這樣p指向的結點就與q指向結點的下一個結點連線到了一起。(3)然後再將p的值賦值給q所指結點的next域,這樣就將p指向的結點插入到了指標q指向結點的後面。其實透過上面這段演算法描述可以看出,應用這個演算法同樣可以建立一個連結串列。這是因為當最開始時連結串列為空,即list==NULL,該演算法可自動為連結串列建立一個結點。在下面的建立其他結點的過程中,只要始終將指標q指向連結串列的最後一個結點,就可以創建出一個 連結串列。注意:函式insertList()的引數中有一個LinkList *list,它是指向LinkList型別的指標變數,相當於指向LNode型別的指標的指標。這是因為在函式中要對list,也就是表頭指標進行修改,而呼叫該函式時,實參是&list,而不是list。因此必須採取指標引數傳遞的辦法,否則無法在被調函式中修改主函式中定義的變數的內容。以下的程式碼也有類似的情況。
何在指標q指向的結點後面插入結點。該過程的步驟如下:(1)先建立一個新結點,並用指標p指向該結點。(2)將q指向的結點的next域的值(即q的後繼結點的指標)賦值給p指向結點的next域。(3)將p的值賦值給q的next域。透過以上3步就可以實現在連結串列中由指標q指向的結點後面插入p所指向的結點。可以透過圖1-5形象地展示出這一過程。圖1-5 向連結串列插入結點過程下面給出程式碼描述:1.void insertList(LinkList *list,LinkList q,ElemType e) /*當連結串列為空時*/ 10. else 16.} 上面的這段程式碼描述瞭如何在指標q指向的結點後面插入結點的過程。其過程包括以下幾步。(1)首先生成一個新的結點,大小為sizeof(LNode),用LinkList型別的變數p指向該結點。將該結點的資料域賦值為e。(2)接下來判斷連結串列是否為空。如果連結串列為空,則將p賦值給list,p的next域的值置為空。否則,將q指向的結點的next域的值賦值給p指向結點的next域,這樣p指向的結點就與q指向結點的下一個結點連線到了一起。(3)然後再將p的值賦值給q所指結點的next域,這樣就將p指向的結點插入到了指標q指向結點的後面。其實透過上面這段演算法描述可以看出,應用這個演算法同樣可以建立一個連結串列。這是因為當最開始時連結串列為空,即list==NULL,該演算法可自動為連結串列建立一個結點。在下面的建立其他結點的過程中,只要始終將指標q指向連結串列的最後一個結點,就可以創建出一個 連結串列。注意:函式insertList()的引數中有一個LinkList *list,它是指向LinkList型別的指標變數,相當於指向LNode型別的指標的指標。這是因為在函式中要對list,也就是表頭指標進行修改,而呼叫該函式時,實參是&list,而不是list。因此必須採取指標引數傳遞的辦法,否則無法在被調函式中修改主函式中定義的變數的內容。以下的程式碼也有類似的情況。