我有一個關於在單個鏈表中給定位置插入元素的問題。其實問題只是插入中間部分, 這是我的插入功能;在給定的位置插入節點C++
void SimpleList::insert (const ItemType & item, int position){
Node* prev = NULL;
Node* curr = NULL;
Node* newNode = new Node();
newNode->data = item;
int tempPos = 0;
curr = head;
if(head != NULL){
while(curr->next != NULL && tempPos != position)
{
prev = curr;
curr = curr->next;
tempPos++;
}
if(position==1)
{
newNode->next=head;
head=newNode;
size++;
}
else if(curr->next == NULL)
{
curr->next = newNode;
last = newNode;
newNode->next= NULL;
size++;
}
else
{
prev->next = newNode;
newNode->next = curr;
size++;
}
}
else {
last = head = newNode;
last->next = NULL;
size++;
}
}
和我的測試代碼的輸出是;
after insert into empty list: should be 34 34 after insert at beginning: should be 45, 34 45 34 after inserts in middle: should be 45, 72, 56, 34 45 34 56 72 after insert at end: should be 45, 72, 56, 34, 67 45 34 56 72 67
我該如何解決這個問題? 謝謝大家的幫助。
首先嚐試首先在紙上找出全部內容,然後嘗試使用您在紙上創建的算法重新實現該功能。然後,如果您在學習如何使用調試器時遇到問題,請逐行逐行查看代碼,以瞭解其功能。 –
此外,請嘗試創建一個可以向我們展示的[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve),其中包括如何調用函數以及使用什麼值。 –
您是否一直在使用您的索引基礎?位置0和位置1將通過其外觀插入列表頭部,這是一個奇怪的設計決定。 – Rook