首页 > 代码库 > 单链表反转
单链表反转
一拿到这个题目首先想到可以把指针倒转,第一个元素置为单链表末尾,第二个的next指向第一个,以此类推到单链表原末尾,并将head->next指向原最后一个节点,由此完成单链表的反转。
接下来看源码吧:
#include<stdio.h> struct node { int data; Pnode next; }; typedef struct node *Pnode; Pnode *Strrev(Pnode head) { Pnode p=NULL,q=NULL,r=NULL; if(head->next==NULL) //单链表为空 { return NULL; } p=head->next; //p指向第一个节点 q=p->next; //q指向第二个节点 p->next=NULL; //原第一个节点置为末节点 while(q!=NULL) { r=q->next; q->next=p; //指针倒转,第二个的下一个节点指向第一个 p=q; //p继续指向下一个 q=r; //q继续指向下一个 } head->next=p; //指针倒转后,原末节点为第一个节点 rerurn head; }
单链表反转
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。