单链表是最简单的数据结构,同时也是最常接触的数据结构,这个问题也很常见,通常这个问题我们有两种解决办法。

      1.逆置单链表之后输出

      这篇文章讲述了这样的过程

http://blog.csdn.net/dlutbrucezhang/article/details/11709633,但是这种方法不一定可行,因为这样改变了单链表原来的结构

      2.利用栈的后进先出的思想,首先我们正序输出单链表中的每一个节点,在输出的过程中我们把这些节点存入栈中,之后,在从栈中输出,由此就可以得到倒序的单链表

      不过,上述方法需要定义栈或者需要其他的存储空间,由此,我们可以联想到栈的原理,不再申请其他的空间,利用递归的思想输出

      源代码如下:

#include <stdio.h>
#include <malloc.h>typedef struct node
{int data;struct node *next;
}LinkedNode, *LinkList;void print(LinkList list_head);int main(int argc, char **argv)
{LinkList list_head = NULL;LinkedNode *temp = NULL;int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int i;list_head = (LinkedNode*)malloc(sizeof(LinkedNode));if (list_head == NULL)return -1;list_head -> data = array[0];list_head -> next = NULL;for (i = 1; i < 10; i++){LinkedNode *node = NULL;LinkedNode *temp = NULL;temp = list_head;node = (LinkedNode*)malloc(sizeof(LinkedNode));if (node == NULL)return -1;node -> data = array[i];node -> next = NULL;while (temp -> next != NULL)temp = temp -> next;temp -> next = node;}/*Á´±íµÄÕýÐòÊä³ö*/temp = list_head;while(temp != NULL){printf("%d  ", temp -> data);temp = temp -> next;}printf("\n");print(list_head);printf("\n");return 0;}/*µ¹ÐòÊä³öÁ´±íÖеĽڵã*/
void print(LinkList list_head)
{LinkedNode * node = NULL;node = list_head;if(node == NULL)return;if(node -> next == NULL){printf("%d  ", node -> data);return;}else{print(node -> next);printf("%d  ", node -> data);}
}

说明,其实这种方法只适合链表长度适中的情况,如果太大,必定在栈中嵌套多次,最终可能会导致栈的溢出。

倒序输出单链表的内容相关推荐

  1. 合并单链表,输出单链表中间元素,判断是否有环等

    本博文内容为单链表相关的笔试题,转载请注明转载处,否则必究 1. 合并两个有序的单链表成一个有序的单链表 方法分为递归实现与非递归实现,两种方法都不额外开辟 内存空间 链表的数据结构在本博客的单链表逆 ...

  2. 使用递归顺序和逆序输出单链表

    分析如何缩小问题规模.(递归体) 将链表分成两部分,头节点和剩余节点,再将剩余节点分解成剩余节点的头节点和剩余节点······ 分析结束条件 使问题无法再继续分解时的条件 顺序输出链表 void pr ...

  3. c语言输出单链表最大值与最小值,数据结构(C语言版)---顺序表与链表的比较...

    1.存取方式 1)顺序表:可以顺序存取,也可以随机存取. 2)链表:只能从表头顺序存取. 2.逻辑结构与物理结构 1)顺序存储:逻辑上相邻,物理位置相邻. 2)链式存储:逻辑上相邻,物理位置不一定相邻 ...

  4. 用剥洋葱理解递归逆序输出单链表

    题目要求:从最里层开始,依次往外拔掉每一层的洋葱 假设带头结点(最外层看做头结点L) void Reverse(Linklist L){ 第一步,判断L后边还有没有,有的话才能往下剥,没有的话程序en ...

  5. 写一个方法,给你一个字符串 倒序输出来。例如:从控制台输入abc,程序进行处理后在控制台输出cba

    编写一个方法,实现两个整型变量之间的数值交换,如a中存储20,b中存储30,交换后a中存储内容为30,b中存储内容为20. package test; /*** 编写一个方法,实现两个整型变量之间的数 ...

  6. python基于tpot训练模型并抑制输出stackingestimator、而是输出单模型例如xgboost设置

    python基于tpot训练模型并抑制输出stackingestimator.而是输出单模型例如xgboost设置 目录 python基于tpot训练模型并抑制输出stackingestimat

  7. shell中echo使用单引号时输出单引号

    我们知道,echo输出字符串时可以使用单引号或双引号括起来,使用单引号会忽略字符串中的特殊字符直接把特殊字符打印出来,此时它可以打印出几乎所有的特殊字符,除了单引号自己!如果输出单引号会出现以下情况: ...

  8. 如何找出单链表中倒数第K个元素

    第一种方法 为了找出单链表的倒数第K个元素,需要知道这个单链表的长度是多少,就是需要遍历一遍这个单链表,长度为n,倒数第k个,就是单链表的第(n-k)个元素 public Node findLastK ...

  9. 【数据结构初阶】单链表补充内容+又双叒叕刷链表题

    目录 1.顺序表&链表的优点和缺点 2.单链表和双向循环链表 3.一点杂七杂八的东西 3-1顺序表和链表打印的断言 3-2.栈上和堆上定义一个新节点 3-3.二级指针 3-4.哨兵头结点的作用 ...

最新文章

  1. Cartographer 数据集国内地址
  2. micropythonesp8266的温度湿度_用ESP8266上传温湿度给ONENET(不需要arduino)
  3. Amazon AWS云计算服务简介
  4. php和python交互-PHP与Python进行数据交互
  5. 电机编码器调零步骤_各种编码器的调零方法
  6. tp5上传文件并获取文件路径_TP5上传文件
  7. python变量名包括_Python – 获取全局范围内对象的所有变量名
  8. ORACLE8的分区管理
  9. 设计数据层组件并在层间传递数据
  10. Android AudioTrack/AudioRecord -wav文件读取3
  11. python-DBSCAN密度聚类
  12. Linux常用命令(第二版) --网络通信命令
  13. 光线追踪技术 清华大学 pdf_实时光线追踪技术:业界发展近况与未来挑战
  14. rstudio r语言_如何在R中接受用户输入?
  15. LInux 查看环境变量
  16. 对uni.request()二次封装,封装$myRequest方法并挂载到全局
  17. 战略、业务流程和知识管理
  18. 工业园区与大型制造工厂企业食堂消费管理系统常见需求及解决方案
  19. 数据挖掘第三版课后习题
  20. 2020-11-30 DOA估计/方向谱分析 中文书单

热门文章

  1. 又一年度热销爆款,OPPO R11上市一个月勇夺线下销量第一
  2. 购物车的实现(jsp的session+Java的Map的结合)
  3. WIndows 下安装mysql (non-install版本,即绿色版,或称为 源码包)
  4. HTML+JS弹出可移动DIV遮罩层
  5. 设置/修改centos上的swap交换分区的方法
  6. ArcIMS .NET Link的开发配置
  7. SpringBoot___自定义消息转换器、MVC配置
  8. Python算法和数据结构:在二叉树中找到和为sum的所有路径
  9. 对于flat_interface与public_interface的理解
  10. git常用基本简单命令