C语言单链倒序遍历递归方法和非递归方法
一 递归方法
struct list { void *data; int len; struct list *next; }; void reverse_deal_list(struct list *lst) { if(lst->next == NULL) { printf("%d\n", *((int *)lst->data)); return; } reverse_deal_list(lst->next); printf("%d\n", *((int *)lst->data)); } int main(int argc, char *argv[]) { struct list *lst, a, b, c; int x = 1, y = 2, z = 3; a.data = (void *)&x; b.data = (void *)&y; c.data = (void *)&z; lst = &a; a.next = &b; b.next = &c; c.next = NULL; reverse_deal_list(lst); return 0; }
二 非递归方法