#include <stdlib.h> #include <stdio.h> typedef struct node *link; struct node { int item; link next; }; link reverse(link x) { link r = NULL, y = x, t; while (y != NULL) { t = y->next; y->next = r; r = y; y = t; } return r; } int main() { int i, N = 9; struct node heada; link p,r; heada.item = rand()%1000; heada.next = NULL; for (p = &heada, i = 0; i < N; i++) { p = (p->next = (link)malloc(sizeof(*p))); p->next = NULL; p->item = rand()%1000; } for (i = 0, p = &heada; p != NULL; p = p->next, i++) { printf("链表中的第%d个数据是:%2d ", i, p->item); } r = reverse(&heada); printf(" 逆序后的数据 "); for (i = 0, p = r; p != NULL; p = p->next, i++) { printf("链表中的第%d个数据是:%2d ", i, p->item); } }
有什么不对的地方, 请大侠不吝指教啊^_^