[英]C linked list and pointers
有人可以用指針解釋這段代碼的作用嗎:
while(terminate== 0)
{
s->value=s->next->value;
if ((s->next->next)==NULL)
{
free(s->next);
s->next=NULL;
terminate= 1;
}
s=s->next;
}
其中s作為參數傳遞為:set_el * s,並具有以下結構:
typedef struct set_el
{
int value;
struct set_el* next;
} set_el;
如果輸入NULL,則由於s->value
非法,將導致分段錯誤。
在大小為1的列表上,由於s-> next-> value是非法的,同樣會失敗。
在具有循環的列表(例如a> b> a ...)上,它將無限循環,因為s-> next-> next永遠不會為NULL
最后,在大小為2或更大的鏈接列表上,它將遍歷該列表,將下一個節點的值對應到當前節點,並刪除最后一個節點。
有效地,它將以一種非常about回的方式“刪除”列表中的第一個節點。 (我們釋放了最后一個節點的內存,但將值復制到了列表中。新列表要短1個節點,並且第一個節點中沒有值)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.