#include<iostream>
#include<malloc.h>
using namespace std;
struct node
{
int data;
node* next;
};
node *L;
node* reverse(node *h)
{
node *p,*q;
p=NULL;
q=h;
while(q!=NULL)
{
h=h->next;
q->next=p;
p=q;
q=h;
}
h=p;
return h;
}
int main()
{
node *q;
L=(node*)malloc(sizeof(node));
L->next=NULL;
q=L;
for(int i=1;i<=10;i++)
{
node *p;
p=(node*)malloc(sizeof(node));
p->data=i;
q->next=p;
q=p;
q->next=NULL;
}
L=L->next;
L=reverse(L);
while(L!=NULL)
{
cout<<L->data<<" ";
L=L->next;
}
system("pause");
return 0;
}
这个算法的关键在于每次都是把修改后的q指向的节点拿出来,然后连接到原来p为头节点的链表上,
对一个不带头结点的单链表进行逆置