C语言之从尾到头打印链表
来源:互联网 发布:阿里移动推荐算法代码 编辑:程序博客网 时间:2024/06/03 16:01
从尾到头打印链表:看完这题以后,很多人的第一反应就是从头到尾输出比较简单,于是我们很自然地想到把链表中链接结点的指针反转过来,改变链表的方向,就可以从头到尾输出了。但是该方法会改变原来链表的结构。那如果我们不该表链表的结构又怎样打印呢。#include <stdio.h>#include <stdlib.h>typedef struct _list{struct _list *next;int data;}List;typedef struct _stack{int data[10];int top;}Stack;int InitStack(Stack *s){if(s == NULL){return 0;}s->top = -1;return 1;}int Insert_list(List *list, int data){if(list == NULL){return 0;}List *node = (List *)malloc(sizeof(List)/sizeof(char));if(node == NULL){return 0;}node->data = data;node->next = list->next;list->next = node;return 1;}int Display(Stack *s, List *list) //栈打印链表元素{if(s == NULL || list == NULL){return 0;}List *tmp = list->next;while(tmp){s->data[++s->top] = tmp->data;tmp = tmp->next;}while(s->top != -1){printf("%4d",s->data[s->top--]);}printf("\n");return 1;}void r_display(List *list) //递归打印链表元素{if(list->next == NULL){return ;}r_display(list->next);printf("%4d",list->next->data);}int main(){Stack *s = (Stack *)malloc(sizeof(Stack)/sizeof(char));if(s == NULL){return 0;}InitStack(s);//置空栈List *list = (List *)malloc(sizeof(List)/sizeof(char));if(list == NULL){return 0;}list->next = NULL;Insert_list(list,1);//链表头插法Insert_list(list,2);Insert_list(list,3);Insert_list(list,4);Insert_list(list,5);Insert_list(list,6);Insert_list(list,7);r_display(list);printf("\n");//Display(s,list);return 0;}总结:很多人看完题目以后会想到一遍又一遍地遍历找最后一个节点,然后打印节点里的值,但是你们有没有想过这样的打印,它的时间复杂度又该增加了多少,所以我们不用这种方法。我们很容易想到,我们的栈这种数据类型就是先进后出,和我们题目中的要求不谋而合,所以我们就用栈的方式去打印链表,这样我们也不用花很多的系统资源去一遍又一遍地去遍历链表。同时我也提供了一种更简单的方式打印链表,那就是递归,这样可以使你的代码变得很简洁,但是使用递归就和我前面说的时间复杂度增大。
阅读全文
1 0
- C语言之从尾到头打印链表
- C语言实现: 从尾到头打印链表
- (转)java语言:从尾到头打印链表
- 剑指offer--python --c++--从尾到头打印链表
- 从尾到头打印单链表(C语言)
- 剑指Offer之从尾到头打印链表
- 剑指Offer之 - 从尾到头打印链表
- 剑指offer(一)之从尾到头打印链表
- 牛客网刷题之从尾到头打印链表
- 剑指offer之从尾到头打印链表
- 【算法题之路】从尾到头打印链表
- 剑指offer之从尾到头打印链表
- 剑指offer之从尾到头打印链表
- 剑指offer之三---从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- mysql中复制表结构的方法小结
- JAVA 运行时报错:catch an exception java.util.ConcurrentModificationException
- 基尔霍夫矩阵计算欧拉回路
- PluginManager分析
- Android动画学习(六)之View揭露效果和SurfaceView实现动画
- C语言之从尾到头打印链表
- dubbo配置方式(上)
- 剑指offer——1.二维数组中的查找
- CSU 1562 Fun House
- HDU 6064 RXD and numbers BEST theorem
- POJ1088滑雪问题 简单dp(动态规划)已AC
- Jquery简介
- 手动实现ArrayList
- stm32笔记 keil5警告: declared implicitly