面试题5
2015-08-11 08:51
381 查看
1 题目描述
输入一个链表的头指针,从尾到头反过来打印出每一个节点的值2 算法描述
第一个遍历到的节点最后一个输出,而最后一个遍历到的节点第一个输出,典型的“后进先出”,可以用栈实现这种顺序。既然想到用栈来实现这个函数,而递归在本质上就是一个栈结构,于是很自然地又想到了用递归来实现。#include <stdio.h> typedef char datatype; typedef struct node{ datatype data; struct node *next; } listnode; typedef listnode *linklist; linklist creater() { char ch; linklist head; listnode *p,*r; head=NULL; r=NULL;/*r为尾指针*/ while((ch=getchar())!='\n'){ p=(listnode *)malloc(sizeof(listnode)); p->data=ch; if(head==NULL) head=p;/*head 指向第一个插入结点*/ else r->next=p;/*插入到链表尾部*/ r=p;/*r指向最新结点,即最后结点*/ } if(r!=NULL) r->next=NULL;/*链表尾部结点的后继指针指定为空*/ return head; } void printlistreversingly_iteratively(listnode* head){ if(head==NULL){ return; }else{ printlistreversingly_iteratively(head->next); printf("%c",head->data); } } main() { linklist newlist=creater(); printlistreversingly_iteratively(newlist); }
相关文章推荐
- 剑指Offer面试题44(Java版):扑克牌的顺序
- 剑指Offer面试题43(Java版):n个骰子的点数
- 黑马程序员-----Java基础-----单例设计模式
- 硅谷IT企业面试风格漫谈II:FLAG
- 【LeetCode-面试算法经典-Java实现】【112-Path Sum(路径和)】
- 【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】
- 【LeetCode-面试算法经典-Java实现】【110-Balanced Binary Tree(平衡二叉树)】
- 黑马程序员——学习日记之反射
- 黑马程序员——学习日记之IO流
- 黑马程序员——学习日记之部分类概述
- 黑马程序员——学习日记之多线程
- 黑马程序员——学习日记之泛型和集合框架工具类
- 黑马程序员——学习日记之内部类 异常
- 黑马程序员——学习日记之面向对象特征
- 黑马程序员——学习日记之面向对象基础
- 黑马程序员——学习日记之控制语句练习
- 黑马程序员——学习日记之Java基础概述
- 程序员如何改掉晚睡习惯?
- 当好程序员的第一步
- 从一道面试题来认识java类加载时机与过程