我必須使用鏈接列表(因此指針)在c中打印一個集合的列表。但是,當我刪除列表的第一個元素並嘗試打印列表時,它只是顯示了很多地址。有什麼問題可能是什麼建議?謝謝!刪除鏈接列表的第一個節點
刪除功能:
int delete(set_element* src, int elem){
if (src==NULL) {
fputs("The list is empty.\n", stderr);
}
set_element* currElement;
set_element* prevElement=NULL;
for (currElement=src; currElement!=NULL; prevElement=currElement, currElement=currElement->next) {
if(currElement->value==elem) {
if(prevElement==NULL){
printf("Head is deleted\n");
if(currElement->next!=NULL){
*src = *currElement->next;
} else {
destroy(currElement);
}
} else {
prevElement->next = currElement->next;
}
// free(currElement);
break;
}
}
return 1;
}
void print(set_element* start)
{
set_element *pt = start;
while(pt != NULL)
{
printf("%d, ",pt->value);
pt = pt->next;
}
}
很難說沒有任何代碼,但問題可能是您正在嘗試釋放其頭部進入後打印的清單。更新指向列表的指針,指向'head-> next'條目,並且您應該是golden。 –
你是如何打印清單的? –
您可能想閱讀[Stack Overflow問題清單](http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist),它會幫助您編寫更好的問題。 –