【面试算法系列】逆序输出一个单链表 - C语言实现
2015-09-08 17:13
543 查看
将一个单链表的内容逆序输出,考虑到当一个链表的元素打印之前将该元素的前一个元素打印,运用这个思路可以使用递归来实现该功能,(不过该方法仍然存在,问题,当链表过长会导致栈溢出问题)代码如下:
</pre><pre name="code" class="cpp">/* * File: main.c * Author: Kyle * * Created on 2015年9月7日, 下午2:34 */ #include <stdio.h> #include <stdlib.h> typedef int Item; //定义数据项类型 /* *单链表,结构体 */ typedef struct node { Item item; //数据域 struct node* next; //链域 } Node; void Add2Tail(Node** pHead, int value) { //链表末尾添加一个元素 Node *p = (Node *) malloc(sizeof (Node)); p->item = value; p->next = NULL; if (*pHead == NULL) { *pHead = p; } else { Node *temp = *pHead; while (temp->next != NULL) { temp = temp->next; } temp->next = p; } } void Reversing_Output_List(Node* list) { //递归方法,逆序输出一个链表内容 if (list != NULL) { if (list->next != NULL) { Reversing_Output_List(list->next); } printf("%d,", list->item); } } int main() { /** * 2.面试题5 逆序输出一个链表内容 */ Node *p = NULL; Add2Tail(&p, 4); Add2Tail(&p, 56); Add2Tail(&p, 6); Add2Tail(&p, 7); Add2Tail(&p, 9); Add2Tail(&p, 3); Add2Tail(&p, 1); Add2Tail(&p, 66); Add2Tail(&p, 24); Reversing_Output_List(p); return (EXIT_SUCCESS); }
相关文章推荐
- Lua和C语言的交互详解
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数
- 在C语言中转换时间的基本方法介绍