当前位置: 首页 > news >正文

算法之线性表1.1.1(7)带头结点链表的反向输出

设L为带头结点的单链表,编写算法实现从尾到头反向输出每个节点的值。

算法思想:

方法一:将链表压栈再输出,时间复杂度为O(n),空间复杂度为O(n)

方法二:用头插法重新建立单链表在输出,时间复杂度为O(n),空间复杂度为O(1)

方法三:用递归,本质上也用到了栈,所以空间复杂度为O(n),时间复杂度为O(n)

代码:

#include<iostream>
#include"initList/initList.h"
#include<stack>
using namespace std;// 方法一:用栈
void reversePrint(LinkList* L){stack<TypeData> s;//压栈while(L->next !=NULL ){ s.push(L->next->data);L = L->next;}//打印while(!s.empty()){cout<<s.top()<<" ";s.pop();}
}
//方法二:用头插法
void headInPrint(LinkList* L){LinkList *p;p = L->next;L->next = NULL;while(p!=NULL){LinkList* temp = (LinkList*)malloc(sizeof(LinkList*));//保持不断链temp = p->next;//头插法p->next = L->next; //p节点指向node2L->next = p;p = temp;}printList(L);
}方法三:用递归
void recur(LinkList* L){if(L->next!=NULL){recur(L->next);}if(L!=NULL){cout<<L->data<<" ";}
}int main(){LinkList* L = initList();//方法一:reversePrint(L);// 方法二:headInPrint(L);//方法三:recur(L->next);
}

http://www.lryc.cn/news/96513.html

相关文章:

  • 设计模式三:抽象工厂模式(Abstract Factory Pattern)
  • Linux用户权限问题详解
  • flask中的session介绍
  • 记录联想拯救者R720重装系统
  • Spring Alibaba Sentinel实现集群限流demo
  • 102、SOA、分布式、微服务之间有什么关系和区别?
  • Ubuntu 20.04下的录屏与视频剪辑软件
  • 面试题 -- iOS数据存储
  • spring复习:(51)environment、systemProperties、systemEnvironment三个bean是在哪里被添加到容器的?
  • element ui 上传控件携带参数到后端
  • scrapy分布式+指纹去重原理
  • FileHub使用教程:Github Token获取步骤,使用快人一步
  • 嵌入式开发:单片机嵌入式Linux学习路径
  • Libvirt的virsh工具常用命令
  • 高斯消元解异或方程组写法
  • 前端 mock 数据的几种方式
  • 【GO】go语言入门实战 —— 猜数字游戏
  • opencv-25 图像几何变换04- 透视 cv2.warpPerspective()
  • 视频讲解Codeforces Round 887 (Div. 2)(A--C)
  • 【团队协作开发】将Gitee项目导入到本地IDEA中出现根目录不完整的问题解决(已解决)
  • vue-pdf 单列显示多个pdf页面
  • 2023年FPGA好就业吗?
  • 【业务功能篇52】Springboot+mybatis mysql开启批量执行sql参数 allowMultiQueries=true
  • StableDiffusion 换脸实现
  • 直播平台源码开发提高直播质量的关键:视频编码和解码技术
  • 如何使用 PHP 更新数据到数据库?
  • NLP masked_tokens[]、token_masks[]是什么?
  • aoa_android工程编译注意事项
  • java篇 类的进阶0x06:可见性修饰符(访问修饰符)
  • Java 贪心算法经典问题解决