1
我有一個非常基本的疑問。我使用結構創建了鏈接列表,這是我的刪除代碼。如何在linklist中刪除後釋放節點C
void delete(int num)
{
struct node* temp=head;
struct node* prev=head;
if(temp == NULL)
printf("List Empty\n");
else
{
while(temp != NULL)
{
if(temp->value == num)
{
prev=temp->next;
free(temp);
break;
}
else
{
prev=temp;
temp=temp->next;
}
}
運行此代碼後,該節點不會被刪除。如果我在空閒(temp)後打印temp-> value,則該值爲0.但是,情況並非如此。免費應該擦拭節點。所以我不明白0出現在哪裏。任何想法這個代碼有什麼問題?
我的播放功能:
void show()
{
struct node *temp = head;
while(temp != NULL)
{
printf("---- %d ---- ", temp->value);
temp=temp->next;
}
printf("\n\n");
}
我的結構:
struct node
{
int value;
int pos;
struct node* next;
};
感謝。
很酷。這處理所有情況下的頭部情況。如果我刪除第一個元素,我仍然得到0。那麼,根據我的代碼,如果我刪除temp,那麼head也會被刪除?我是否需要特殊條件來處理第一個節點的刪除? – darshshah 2013-02-16 20:04:44
if(temp == head){head = temp-> next;}這個條件將處理這種情況。謝謝 – darshshah 2013-02-16 20:16:06