自己理解的思路如下所示: 從第二個節點開始,先記錄下一個節點,把第二個節點移到頭節點之前,頭節點變為移動的這個節點之前記錄的節點變為接下來要移動的節點用for迴圈重覆最後把原來頭節點變成尾節點(*next指向NULL)返回鏈表 的頭節點 c語言實現代碼如下: struct stu *reserve( ...
自己理解的思路如下所示:
從第二個節點開始,先記錄下一個節點,把第二個節點移到頭節點之前,
頭節點變為移動的這個節點
之前記錄的節點變為接下來要移動的節點
用for迴圈重覆
最後把原來頭節點變成尾節點(*next指向NULL)
返回鏈表 的頭節點
c語言實現代碼如下:
struct stu *reserve(struct stu *head)
{
struct stu *p1,*p2,*p3;
p1=head;
p2=p1->next; // 這個結點為要移動的結點
while(p2) //如果下一個節點存在
{
p3=p2->next; //記錄的為要移動的結點的下一個結點
p2->next=p1; //移動結點到最前
p1=p2; //移動的結點變為新表頭
p2=p3; //下個結點變為要移動的結點
}
head->next=NULL; //移動完畢後原來head變為表尾,讓它指向為空
head=p1; //指向逆轉後的頭節點
return head;
}