#include typedef struct _list_t { struct _list_t *next; int data; } list_t; void reverse(list_t *l) { list_t *tmp = NULL, *prev= NULL; list_t *next = l; do { tmp = next->next; next->next = prev; prev = next; next = tmp; } while(tmp); } void print_list(list_t *l) { while(l) { printf("data %d\n", l->data); l = l->next; } } int main() { list_t list[3]; list[0].data = 0; list[0].next = &list[1]; list[1].data = 1; list[1].next = &list[2]; list[2].data = 2; list[2].next = NULL; print_list(list); reverse(list); print_list(&list[2]); return 0; }