基本思想:
增加一个辅助指针,以P结点为例 p—>q—>r,我们只需r, q调换下位置就可以了
p=head;
q=p->next; //
while(q!=NULL)
{
temp=q->next; //r
q->next=p; //q—>r 变成了q—>p
p=q; //指针后移
q=temp;
}
这样增加个辅助的指针就行乐
ok 通过编译的代码:
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
typedef struct List{
int data;
struct List *next;
}List;
List *list_create(void)
{
struct List *head,*tail,*p;
int e;
head=(List *)malloc(sizeof(List));
tail=head;
printf("\nList Create,input numbers(end of 0):");
scanf("%d",&e);
while(e){
p=(List *)malloc(sizeof(List));
p->data=e;
tail->next=p;
tail=p;
scanf("%d",&e);}
tail->next=NULL;
return head;
}
List *list_reverse(List *head)
{
List *p,*q,*r;
p=head;
q=p->next;
while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}
head->next=NULL;
head=p;
return head;
}
void main(void)
{
struct List *head,*p;
int d;
head=list_create();
printf("\n");
for(p=head->next;p;p=p->next)
printf("--%d--",p->data);
head=list_reverse(head);
printf("\n");
for(p=head;p->next;p=p->next)
printf("--%d--",p->data);
}
进阶:
题目出处:http://blog.rainbud.net/article/entry20050928-014721
给定一单链表的表头指针和指向其中一个节点的指针,要求以该指针为头将原链表逆序排列,例如:
1. N1->N2->N3->N4->N5->NULL pHEAD = N1,pSTART = N3,返回N3->N2->N1->N5->N4->NULL
2. N1->N2->N3->N4->N5->NULL pHEAD = N1,pSTART = N5,返回N5->N4->N3->N2->N1->NULL
3. N1->N2->N3->N4->N5->NULL pHEAD = N1,pSTART = N1,返回N1->N5->N4->N3->N2->NULL
不允许额外分配存储空间,不允许递归,可以使用临时变量。
思路:先将整个链表逆序,然后再从pSTART后面断开,将那部分接到pHead上。
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/717446ca04a6125dc5b6b54e0fa14ab4.gif)
![如何实现将一个链表逆序? - 水含笑 - 未语愁眸](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)