菜菜……我的想法:让后者的next连接前者……
#include <stdlib.h>
struct List
{
int number;
struct List * next;
};
struct List * reverse(struct List * head);
int main(void)
{
struct List * current, * temp;
struct List * prev = NULL, * head = NULL;
int num;
while(scanf("%d", &num) == 1)
{
current = (struct List*)malloc(sizeof(struct List));
if(head == NULL)
head = current;
else
prev->next = current;
current->number = num;
current->next = NULL;
prev = current;
}
current = reverse(head);
while(current != NULL)
{
printf("%d ", current->number);
current = current->next;
}
return 0;
}
/*
/* 反序一个单向链表函数
*/
struct List * reverse(struct List * head)
{
struct List * temp;
struct List * prev;
struct List * current;
prev = NULL;
current = head;
while(current != NULL)
{
temp = current->next;
current->next = prev;
prev = current;
current = temp;
}
head = prev;
return head;
}