這段代碼實在看不懂啊,求解
Linklist *reverse(Linklist *head) //鏈表逆置
{
Linklist *p,*t;
p=head->next;
t=p->next;
p->next=NULL;
while(t!=NULL)
{
p=t->next;
t->next=head->next;
head->next=t;
t=p;
}
return head;
}
其中之一:while中第二句head->next就相當於P,那p=t->next;和t->next=head->next(P);有什麼區別呢?
原鏈表
Head ---->[next (first) ]---->[next ]---->[next ]---->[next ]---->[next ]---->[next(rear) ]---[NULL]
p=head->next;//第一個數據節點(first)
t=p->next;
p->next=NULL; 以後的鏈表 在此處斷開,後面的頭結點是 t
Head ---->[next ]-->【NULL】 。。。。。。 p 。。。。。 -->[next ]---->[next ]---->[next ]---->[next ]---->[next ]---[NULL]
p-->--^ 插入一個NULL節點表示結束 t--->--^
循環中不斷地從t 鏈表取下節點,插入Head 之後
插入結束時
Head->[next(rear)]-->[next(prev(rear)].....【next(first)】->[NULL]