前几天面试,遇到这样一个题目!! 题目:输入一个链表的头节点,从头到尾反过来打印每个节点的值。 解题方法:运用递归算法
代码实现如下:
#include<iostream> #include<malloc.h> using namespace std; typedef struct node { int val; struct node *next; }node, *Linklist; void _print(Linklist head) { Linklist p; p = head; if (NULL == p) return; if (p->next) _print(p->next); cout<<p->val<<"->"; } Linklist creat(int n) //尾插法创建链表 { Linklist p = NULL; Linklist head, s; int i = 1; head = (Linklist)malloc(sizeof(node)); p = head; if(n != 0) { while(i <= n) { p->val = i; s = (Linklist)malloc(sizeof(node)); s->val = i++; p->next = s; p = s; } //s->next = head->next; s->next = NULL; } //free(head); //return s->next; return head; } int main(int argc, char**argv) { Linklist p = creat(30); _print(p); return 0; }运行结果:
