#include <stdlib.h> struct List { int index; struct List *next; }; void create_list(struct List **list, int len) { *list = (struct List *) malloc(sizeof(struct List)); (*list)->next = NULL; struct List* p; while(len) { p = (struct List*) malloc(sizeof(struct List)); p->index = len--; p->next = (*list)->next; (*list)->next = p; } } void reverse_list(struct List **list) { struct List *next, *prev, *node; prev = NULL; node = *list; while(node) { next = node->next; if(next == NULL) *list = node; node->next = prev; prev = node; node = next; } } void destory_list(struct List *list) { if(list->next) destory_list(list->next); free(list); list->index = 0; list->next = NULL; } int main(void) { struct List *data; create_list(&data, 20); reverse_list(&data); destory_list(data); return 0; }
东抄抄, 西抄抄, 写了个大概, 玩着玩着都会感觉混淆了.