7-6 带头节点的双向循环链表操作
本题目要求读入一系列整数,依次插入到双向循环链表的头部和尾部,然后顺序和逆序输出链表。
链表节点类型可以定义为
typedef int DataType;
typedef struct LinkedNode{DataType data;struct LinkedNode *prev;struct LinkedNode *next;
}LinkedNode;
链表类型可以定义为
typedef struct LinkedList{int length; /* 链表的长度 */LinkedNode head; /* 双向循环链表的头节点 */
}LinkedList;
初始化链表的函数可声明为
void init_list(LinkedList *list);
分配节点的函数可声明为
LinkedNode *alloc_node(DataType data);
头部插入的函数可声明为
void push_front(LinkedList *list, DataType data);
尾部插入的函数可声明为
void push_back(LinkedList *list, DataType data);
顺序遍历的函数可声明为
void traverse(LinkedList *list);
逆序遍历的函数可声明为
void traverse_back(LinkedList *list);
输入格式:
输入一行整数(空格分隔),以-1结束。
输出格式:
第一行输出链表顺序遍历的结果,第二行输出逆序遍历的结果。
输入样例:
在这里给出一组输入。例如:
1 2 3 4 5 6 -1
输出样例:
5 3 1 2 4 6
6 4 2 1 3 5
链表式代码
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <vector>
#include <queue>
#include <map>
#include <set>
//#include <bits/stdc++.h>
using namespace std;
//#define int long long
typedef long long ll;
#define mem(a, b) memset(a, b, sizeof(a))
#define PI acos(-1)
#define LLu unsigned long long
#define PLL pair<ll, ll>
#define PII pair<int, int>
#define xx first
#define yy second
#define endl '\n'
#define O_O ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int gcd(int a, int b) {return b ? gcd(b, a%b) : a; }
int lcm(int a, int b) {return a/gcd(a, b)*b;}
const int N = 1e6 + 10, INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-6;
struct node
{int data;node *next;node *pre;
};
int main()
{node *head, *tail, *tt, *p;head = new node;tail = new node;tt = new node;head -> next = NULL;head -> pre = NULL;tail = head;tt = head;int x, cnt = 0, n = 0;while(cin >> x && x != -1){n ++;p = new node;p -> next = NULL;p -> pre = NULL;p -> data = x;cnt ++;if(cnt & 1){tail -> pre = p;p -> next = tail;tail = p;}else{tt -> next = p;p -> pre = tt;tt = p;}}int m = n;while(tail && m){if(tail == head){tail = tail -> next;continue;}m --;if(m)cout << tail -> data << " ";else cout << tail -> data << endl;tail = tail -> next;}m = n;while(tt && m){if(tt == head){tt = tt -> pre;continue;}m --;if(m)cout << tt -> data << " ";else cout << tt -> data << endl;tt = tt -> pre;}return 0;
}
相关文章:
7-6 带头节点的双向循环链表操作
本题目要求读入一系列整数,依次插入到双向循环链表的头部和尾部,然后顺序和逆序输出链表。 链表节点类型可以定义为 typedef int DataType; typedef struct LinkedNode{DataType data;struct LinkedNode *prev;struct LinkedNode *next; }LinkedNode;链…...
npm publish 、 npm adduser 提示 403 的问题
0. 查看使用的源:npm config get registry1. 如果使用的不是官方的源,切换:npm config set registry https://registry.npmjs.org/2. 登录:npm adduser3. 查看是否登录成功:npm whoami4. 执行发布命令:npm …...
Java 8的函数式接口使用示例
什么是函数式接口 有且只有一个抽象方法的接口被称为函数式接口,函数式接口适用于函数式编程的场景,Lambda就是Java中函数式编程的体现,可以使用Lambda表达式创建一个函数式接口的对象,一定要确保接口中有且只有一个抽象方法&…...
2023年企业如何改善员工体验?为什么员工体验很重要?
什么是员工体验?大约 96% 的企业领导者表示,专注于员工体验可以更轻松地留住顶尖人才。[1] 这还不是全部。令人震惊的是,87%的企业领导者还表示,优先考虑员工的幸福感将给他们带来竞争优势。尽管有这些发现,但只有19%的…...
设计模式:桥接模式让抽象和实现解耦,各自独立变化
一、问题场景 现在对”不同手机类型“的 “不同品牌”实现操作编程(比如: 开机、关机、上网,打电话等) 二、传统解决方案 传统方案解决手机使用问题类图: 三、传统方案分析 传统方案解决手机操作问题分析 1、扩展性问题(类爆炸),如果我们…...
C++学习记录——십 STL初级认识、标准库string类
文章目录1、什么是STL2、STL简介3、什么是string类4、string类的常用接口说明1、常见构造函数2、容量操作3、迭代器4、其他的标准库的string类关于string类的内容,可以在cplusplus.com查看到。 1、什么是STL STL是C标准库的重要组成部分,不仅是一个可复…...
【redis】redis缓存与数据库的一致性
【redis】redis缓存与数据库的一致性【1】四种同步策略【2】更新缓存还是删除缓存(1)更新缓存(2)删除缓存【3】先更新数据库还是先删除缓存(1)出现失败时候的情况1-先删除缓存,再更新数据库&…...
XCP实战系列介绍12-基于Vector_Davinci工具的XCP配置介绍(一)
本文框架 1.概述2. EcuC配置2.1 Pdu添加步骤2.2 配置项说明3. Can 模块配置4. CanIf 模块配置4.1 接收帧的Hardware Receive Object配置4.2 接收帧和发送帧的Pdu配置1.概述 在文章《看了就会的XCP协议介绍》中详细介绍了XCP的协议,在《XCP实战系列介绍01-测量与标定底层逻辑》…...
Unity Material详解
一、创建 二、属性 1.Shader:Unity内置了一些shader,用户自定义的shader也在这里出现. Edit: 可以编辑一些shader可编辑的内容,如一些属性. 2.Rendering Mode:渲染模式 Opaque-不透明-石头适用于所有的不透明的物体Cutout-镂空-破布透明度只有0%和100…...
碰撞检测算法分类
包围形法粗糙检测, 包含以下两种类检测外接圆法轴对齐包围矩形, AABB 碰撞检测算法之包围形法分离轴精细检测 BOX vs PolygonOBBseparating Axis Theorem碰撞检测算法之分离轴定理GJKGJK(Gilbert–Johnson–Keerthi), 相比 SAT 算法ÿ…...
代码随想录第十二天(
文章目录232. 用栈实现队列补充知识——Deque232. 用栈实现队列 答案思路: 在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来࿰…...
电源模块 DC-DC直流升压正负高压输出12v24v转±110V±150V±220V±250V±300V±600V
特点效率高达80%以上1*2英寸标准封装电源正负双输出稳压输出工作温度: -40℃~85℃阻燃封装,满足UL94-V0 要求温度特性好可直接焊在PCB 上应用HRA 1~40W系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9~18V、及18~36VDC标准&…...
【动画图解】这个值取对了,ViewPager2才能纵享丝滑
前言 在前两篇文章中,我们通过一张张清晰明了的「示意图」,详细地复盘了RecyclerView「缓存复用机制」与「预拉取机制」的工作流程,这种「图解」创作形式也得到了来自不同平台读者们的一致认可。 而从本文开始,我们将正式进入Vi…...
CSDN每日一练:小豚鼠搬家
题目名称:小豚鼠搬家 时间限制:1000ms内存限制:256M 题目描述 小豚鼠排排坐。 小艺酱买了一排排格子的小房子n*m,她想让k只小豚鼠每只小豚鼠都有自己的房子。 但是为了不浪费空间,她想要小房子的最外圈尽量每行每列都有…...
Dockerfile命令及实践构建一个网站
dockerfile用于构建docker镜像的,部署一个用于运行你所需的容器环境。相当一个脚本,通过dockerfile自己的指令,来构建软件依赖、文件依赖、存储、定制docker镜像的方式有两种:手动修改容器内容,导出新的镜像基于Docker…...
[VMware]Ubuntu18.04 网络图标消失
Ubuntu 18.04 网络图标消失运行环境问题解决NO.1 执行 sudo systemctl stop network-managerNO.2 执行 sudo rm /var/lib/NetworkManager/NetworkManager.stateNO.3 执行 sudo systemctl start network-managerNO.4 vi /etc/NetworkManager/NetworkManager.confNO.5 执行 sudo …...
国产C2000,P2P替代TMS320F280049C,独立双核32位CPU,主频高达400MHz
一、特性参数 1、独立双核,32位CPU,单核主频400MHz 2、IEEE 754 单精度浮点单元 (FPU) 3、三角函数单元 (TMU) 4、1MB 的 FLASH (ECC保护) 5、1MB 的 SRAM (ECC保护&…...
二十五、Gtk4-多线程分析
1 回顾 1.1 Gnome相关 首先回顾一下GLib,GObject,GIO,Gtk的不同,因为下面会涉及到这些概念里面的函数。 所有这些都是由Gnome项目开发的库,一般都用于Gnome环境相关的应用程序。 Gtk:GUI界面库。GLib&a…...
JVM基础学习
JVM分为两个子系统,两个组件一个子系统是Class loader类装载系统,另一个子系统是Execution Engine执行引擎一个组件是Runtime data area 运行时数据区,Native Interface 本地接口Class loader:根据给定的全限定类名来装载class文件到运行时数…...
ASML逆袭史:人、资金、技术,缺一不可
前言 近年来,由于众所周知的原因,荷兰ASML(阿斯麦)公司的先进半导体制造设备——光刻机,进入普通大众视野,成为人们茶余饭后谈论的焦点话题之一。 1月底,“美日荷三方谈判达成协议,可…...
PyTorch网络可视化实战:Jupyter Notebook与TensorWatch的完美结合
1. 为什么需要PyTorch网络可视化? 当你第一次接触深度学习模型时,可能会被复杂的网络结构搞得晕头转向。想象一下,你正在搭建一个由几十层神经网络组成的模型,每层都有不同的参数和连接方式。这时候如果能直观地"看到"这…...
FPGA DSP48E2实战避坑:为什么你的32x32定点乘法性能上不去?从原理到优化全解析
FPGA DSP48E2实战避坑:为什么你的32x32定点乘法性能上不去?从原理到优化全解析 在FPGA信号处理系统设计中,32x32定点乘法器是构建数字滤波器、FFT核心和矩阵运算的基础模块。许多工程师在使用Xilinx UltraScale系列FPGA的DSP48E2 Slice时&…...
YOLO12模型API接口调用指南:快速集成到Flask/Django项目
YOLO12模型API接口调用指南:快速集成到Flask/Django项目 1. 引言 如果你正在开发一个需要“看懂”图片内容的Web应用,比如智能相册自动打标签、电商平台商品识别,或者社区内容安全审核,那么目标检测技术很可能就是你需要的核心能…...
手把手教你设计反相输入有源低通滤波器(附Multisim仿真文件)
从零开始设计反相输入有源低通滤波器:理论推导与Multisim实战指南 在电子电路设计中,滤波器扮演着至关重要的角色,它能有效筛选特定频率范围内的信号。反相输入有源低通滤波器因其结构简单、性能稳定而广受欢迎。本文将带你从基础理论出发&am…...
TL494电源芯片实战:从电路设计到调压限流全解析(附完整电路图)
TL494电源芯片实战:从电路设计到调压限流全解析(附完整电路图) 在电子工程领域,电源设计一直是项目成败的关键环节。作为一款经典的PWM控制芯片,TL494凭借其稳定性和灵活性,成为众多工程师设计开关电源时的…...
OpenEuler24.x环境部署ZABBIX7.2.4全攻略:从零搭建监控系统
1. 环境准备与基础配置 在国产化操作系统OpenEuler24.x上部署ZABBIX7.2.4监控系统,首先需要确保基础环境配置正确。我曾在多个企业级项目中实践过这套方案,发现环境准备阶段的小细节往往决定了后续部署的成败。 操作系统兼容性验证是第一步。OpenEuler24…...
M1芯片MacOS通过Homebrew一键安装wget的完整指南
1. 为什么M1芯片的Mac用户需要wget? 作为一个在MacOS上摸爬滚打多年的开发者,我见过太多新手面对命令行工具时的茫然。wget这个看似简单的下载工具,其实是数据处理、文件抓取甚至自动化脚本中的瑞士军刀。特别是在M1芯片的Mac上,由…...
RMBG-2.0保姆级教程:零代码部署,小白也能轻松抠图
RMBG-2.0保姆级教程:零代码部署,小白也能轻松抠图 1. 为什么你需要RMBG-2.0? 想象一下这样的场景:你刚拍完一组产品照片准备上架电商平台,却发现每张图都需要手动抠图换背景。在Photoshop里用钢笔工具一点点描边&…...
AMD ROCm深度学习实战:从零构建高性能AI推理架构
AMD ROCm深度学习实战:从零构建高性能AI推理架构 【免费下载链接】ROCm AMD ROCm™ Software - GitHub Home 项目地址: https://gitcode.com/GitHub_Trending/ro/ROCm 面对AI推理场景中模型部署复杂、性能瓶颈突出和硬件兼容性挑战,AMD ROCm开源软…...
惊艳效果可视化:像素幻梦生成过程中间帧扩散去噪动态图解
惊艳效果可视化:像素幻梦生成过程中间帧扩散去噪动态图解 1. 像素幻梦创意工坊概览 Pixel Dream Workshop(像素幻梦创意工坊)是基于FLUX.1-dev扩散模型构建的新一代像素艺术生成工具。与传统AI绘图工具不同,它采用了明亮的16-bi…...
