标签:io ar sp ad ef bs as type return
一拿到这个题目首先想到可以把指针倒转,第一个元素置为单链表末尾,第二个的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; }
标签:io ar sp ad ef bs as type return
原文地址:http://my.oschina.net/u/1764125/blog/333424