我想編寫一個函數,它獲取指向鏈表的頭的指針,並從列表中刪除每個第二個元素的列表。這份名單是類型元素的連接的元件:c中的指針刪除鏈表中每第二個元素的函數
typedef struct element{
int num;
struct element* next;
}element;
我是新來的所有這些指針運算,所以我不知道我寫正確的:
void deletdscnds(element* head) {
element* curr;
head=head->next; //Skipping the dummy head//
while (head!=NULL) {
if (head->next==NULL)
return;
else {
curr=head;
head=head->next->next; //worst case I'll reach NULL and not a next of a null//
curr->next=head;
}
}
}
我不停地變化着它因爲我一直在發現錯誤。你能指出任何可能的錯誤嗎?
哎呀!在你這樣做了一段時間後,你會在泄露的記憶中站立得很深。你還沒有刪除任何東西......你剛剛失去了它。 – dmckee 2012-07-19 17:29:18
我應該在放手之前使用「免費」功能嗎? – Jozef 2012-07-19 17:30:55
在刪除curr之前,您必須獲取curr-> next的值。 – 2012-07-19 17:31:31