在無頭單鏈表的一個結點前插入一個結點(不能遍歷連結串列)
阿新 • • 發佈:2018-12-09
思路:
- 由於無頭單鏈表只能找到某一個結點的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;//最後給該結點賦上要插入的值
}