#include "stdio.h"
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
struct node *rev(struct node * head)
{
struct node * p,* q,* temp;
p=head;
if(p==NULL||p->next==NULL)
return(p);/*链表为空或者一个节点*/
q=p->next;
while(q!=NULL)
{
temp=q->next;
q->next=p;
p=q;
q=temp;
}
head->next=NULL;/*将尾节点的next域置空*/
return(p);/*p指向表头*/
}
int main()
{
int n;
struct node * head,* new;
/*头插法建立链表*/
head=NULL;
do
{
printf("请输入整数,以0作为结束\n");
scanf("%d",&n);
new=(struct node *)malloc(sizeof(struct node));
new->data=n;
new->next=head;
head=new;
}while(n);
new=rev(head);
/*输出链表*/
while(new!=NULL)
{
printf("%d\t",new->data);
new=new->next;
}
return 0;
}
还可以用别的方法么?
[此贴子已经被作者于2007-9-7 13:38:47编辑过]