代码如下: #include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct Node { ElemType data; struct Node *next; }Node,*LinkedList; //尾插法建链表 LinkedList LinkedListCreatR() { Node *L; L = (Node *)malloc(sizeof(Node)); L->next = NULL; Node *r; r = L; ElemType x; while(scanf("%d",&x)!=EOF) { Node *p; p = (Node *)malloc(sizeof(Node)); p->data = x; r->next = p; p->next = NULL; r = p; } // r->next = NULL; return L; } //链表的逆序 LinkedList ReverseList(LinkedList L) { if(L->next == NULL || L->next->next == NULL) { return L; } Node *t = NULL,*p = L->next,*q = L->next->next; while(q != NULL) { t = q->next; q->next = p; p = q; q = t; } L->next->next = NULL; L->next = p; return L; } int main(void) { LinkedList list,start; printf("输入数据/n"); list = LinkedListCreatR(); printf("创建链表:"); for(start = list->next;start!=NULL;start=start->next) printf("%d",start->data); printf("/n"); ReverseList(list); printf("逆序输出:"); for(start = list->next;start!=NULL;start=start->next) printf("%d",start->data); printf("/n"); return 0; } 以下是运行截图: 参考网页:http://blog.youkuaiyun.com/niuer09/archive/2010/10/23/5961004.aspx