c語言單向鏈表逆轉實現方法


自己理解的思路如下所示:

從第二個節點開始,先記錄下一個節點,把第二個節點移到頭節點之前,
頭節點變為移動的這個節點
之前記錄的節點變為接下來要移動的節點
用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;

}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM