我有一個結構中刪除第一個元素:下,在列表
struct Node {
int value;
struct Node *next;
};
typedef struct Node List;
而且我實現了將項目添加到列表中,但我有問題,從列表中刪除元素時,它的第一給定列表上元件,我的功能:
void removeItem(List *ptr, int i)
{
List *current = ptr;
List *prev = NULL;
while (current != NULL)
{
if (current->value == i)
{
//it's first element
if (prev == NULL)
{
List *replace = ptr->next;
free(current);
ptr = replace;
current = replace;
}
else
{
prev->next = current->next;
free(current);
current = prev->next;
}
}
else
{
prev = current;
current = current->next;
}
}
}
當我的列表是這樣的:
1,2,3,4,5
使用的removeItem後(列表1)它是:
0,2,3,4,5
不應該存在。
另一個問題是,我也應該實現這些功能時,類型定義是不同的:
typedef struct Node *List;
但後來我的東西不是一個結構得到噸「錯誤的參數類型」 /「請求會員‘價值’或聯合「錯誤。我能找到一些如何處理這個問題的例子嗎?
'PTR =取代;'具有該功能的範圍沒有任何影響。 – 2013-01-18 18:57:33
Right但是ptr = ptr-> next;具有相同的效果(1替換爲0) – Michael
我的意思是'ptr = <這裏的其他任何東西,不管它是什麼>;'沒有效果,因爲'ptr'是變量的局部。閱讀C中的示波器,我感到很累。 – 2013-01-18 19:04:13