示例程序:
#include <stdio.h>
#include <stdlib.h>
typedef struct node* link;
struct node
{
int item;
link next;
};
//链表倒置
link reverse(link x)
{
//保存y的下一个选项
link t;
link r = NULL;
link y = x;
while(y != NULL)
{
//保存y的next
t = y->next;
//改变方向
y->next = r ;
//向后面平移两个指针
r = y;
y = t;
}
return r;
}
int main()
{
int N;
int i;
scanf("%d",&N);
link head = (link)malloc(sizeof(*head));
head->item = 1;
link tmp = head;
for(i = 2;i <= N;i++)
{
link temp = (link)malloc(sizeof(*temp));
temp->item = i;
temp->next = NULL;
tmp->next = temp;
tmp = temp;
}
head = reverse(head);
//第二个条件是tmp != NULL
for(tmp = head;tmp != NULL;tmp = tmp->next)
{
printf("%d ",tmp->item);
}
return 0;
}