我正在嘗試C程序從排序鏈接列表中刪除重複項,我正在使用遍歷列表從開始節點的簡單概念。遍歷時,將每個節點與下一個節點進行比較。如果下一個節點的數據與當前節點相同,那麼我刪除下一個節點。從排序的鏈接列表中刪除重複的元素
我的代碼是:
struct node *remove_dup(struct node *start)
{
struct node *p,*tmp;
p=start;
while(p!=NULL)
{
if(p->info==p->link->info)
{
tmp=p->link;
p->link=p->link->link;
free(tmp);
}
p=p->link;
}
return start;
}
它不給我正確的答案!我的執行有什麼問題?我的觀念錯了嗎?
什麼是不會產生正確結果的輸入示例? – Xymostech 2013-05-04 13:55:50
'p = p-> link;'語句需要進入'else'分支。 – 2013-05-04 13:56:05
你有什麼錯誤嗎? – 2013-05-04 13:56:12