1. 程式人生 > >在無頭單鏈表的一個結點前插入一個結點(不能遍歷連結串列)

在無頭單鏈表的一個結點前插入一個結點(不能遍歷連結串列)

思路:

  • 由於無頭單鏈表只能找到某一個結點的next結點,而不能不利用遍歷的方法找到某一個結點的prev結點,所以之前的遍歷方法在此處不能使用。我們雖然不能在該結點前插入結點,但是能在該結點後插入結點,所以在該結點後插入結點,將該結點與新插入結點的值交換即可。由於交換要寫一個函式,所以先記錄下該結點的值,建立新結點時的值直接定位這個值,再把要插入的值賦給該結點,這樣就不用再寫一個交換函數了。

程式碼:

void InsertPosFront(pNode pos, DataType d)
{
    pNode pNewNode = NULL;
    if (pos == NULL
)//確保該位置存在 { return; } pNewNode = BuyNode(pos->data);//建立一個值與該結點相同的結點 pNewNode->next = pos->next;//將新結點連上pos的下一個結點 pos->next = pNewNode;//pos位置的結點再連上新結點 pos->data = d;//最後給該結點賦上要插入的值 }

圖展示:

這裡寫圖片描述