数据结构---链栈

数据结构(链表、链栈、链队列、二叉树、图) 本文用于总结数据结构(链表、链栈、链队列、二叉树、图)的创建方式与遍历方式!!! 本目录代码已上传至github中!!! 1. 链表 1. 线性表顺序存储和链式存储的优缺点? 顺序存储: a.不需要增加额外的存储空间,快速存取指向位置的元素; b.在插入和删除过程中,需要移动大量元素; c.需要预先分配存储空间; 链式存储: a.插入删除操作时间为O(1); b.用任意位置的存储单元存... 阅读详情

数据结构–链栈

根据栈的定义,和链表结合
利用链表的头插法实现入栈,利用链表删除头元素的方法实现出栈

定义结构体

//定义链栈
typedef struct Linknode{
	elemtype data;
	Linknode *next;
}*ListStack;

对栈进行初始化

//初始化
void initStack(ListStack &S){

	S=(ListStack)malloc(sizeof(Linknode));//创建头节点
	S->next=NULL;//指向空
}

判断栈是否为空:

//判栈空
bool StackEmpty(ListStack &S){

	if(S->next==NULL)
		return true;
	else 
		return false;
}

入栈

bool Push(ListStack &S,elemtype x){

	Linknode *q,*p;
	p=S;              //指向S栈 
	q=(Linknode*)malloc(sizeof(Linknode));//分配一个节点
    
	q->data=x;      	
	q->next=p->next;        
	p->next=q;
		
	return true;	
}

出栈

//出栈
bool Pop(ListStack &S,ListStack &x){
	
	if(StackEmpty(S)) //判栈空
		return false;
   ListStack p;

   p=S->next;
   S->next=p->next;
   x=p;     

   free(p);//释放P结点的内存
return true;

}

读栈顶元素

//读栈顶元素
bool GetTop(ListStack &S,ListStack &x){

	if(StackEmpty(S))    //判断是否为空栈
		return false;
   x=S->next;   //用x将栈顶元素的信息带回
   return true;
}

完整代码:

#include<stdio.h>
#include<iostream>
#include<stdlib.h>
using namespace std;

typedef int elemtype;

//定义链栈
typedef struct Linknode{
	elemtype data;
	Linknode *next;
}*ListStack;

//初始化
void initStack(ListStack &S){
 

	S=(ListStack)malloc(sizeof(Linknode));//创建头节点

	S->next=NULL;//指向空

}

//判栈空
bool StackEmpty(ListStack &S){

	if(S->next==NULL)
		return true;
	else 
		return false;
}


//进栈
bool Push(ListStack &S,elemtype x){

	Linknode *q,*p;
	p=S;              //指向S栈 
	q=(Linknode*)malloc(sizeof(Linknode));//分配一个节点
    
	q->data=x;      	
	q->next=p->next;        
	p->next=q;
		
	return true;	
}

//出栈
bool Pop(ListStack &S,ListStack &x){
	
	if(StackEmpty(S)) //判栈空
		return false;

   ListStack p;

   p=S->next;
   S->next=p->next;
   x=p;     

   free(p);//释放P结点的内存
return true;

}

//读栈顶元素
bool GetTop(ListStack &S,ListStack &x){

	if(StackEmpty(S))    //判断是否为空栈
		return false;

   x=S->next;   //用x将栈顶元素的信息带回

   return true;
}


void main(){

	ListStack S;	
    Linknode *x;
	elemtype v;
	int i;

	initStack(S);//初始化栈

	for(i=0;i<=5;i++){

	cin>>v;
	Push(S,v);
	}

	for(i=0;i<=5;i++){
	GetTop(S,x);
	cout<<x->data<<endl;//输出栈顶元素
	Pop(S,x);	
	}

}

测试结果:
在这里插入图片描述

Immich vs Nextcloud照片管理实测:自建私有云相册到底选哪个? 本文深度评测了Immich与Nextcloud在私有云相册管理中的表现,涵盖核心功能、性能基准、本土化实践及进阶功能。Immich凭借微服务架构和AI优化在照片管理、移动端体验上表现优异,而Nextcloud则强在生态整合。文章还提供了Docker部署优化和国内网络适配方案,帮助用户根据需求选择最佳方案。 阅读详情

相关推荐

保姆级教程:用dnSpy调试Unity游戏,从找DLL到打断点全流程(附调试版mono.dll下载)

本文详细介绍了使用dnSpy调试Unity游戏的全流程,包括环境准备、关键程序集定位、mono.dll版本匹配与替换、调试环境配置及实战技巧。通过本教程,开发者可以高效进行Unity游戏逆向分析,适用于学习设计模式或安全审计等场景。

weixin_30236595的博客 577

【数据结构】栈

顺序栈 定义 #define MaxSize 50 //栈中元素最大个数 typedef struct{ ElemType data[MaxSize]; //存放栈中元素 int top; //栈顶指针 }SqStack; 操作集 void InitStack(SqStack &S); //初始化 bool StackEmpty(SqStack S); //判空 bool Push(SqStack &S,ElemType x); //进栈 bool

Obliviate的博客 1313

智能车轮腿组‘定点排雷’科目全解析:从雷区识别到姿态控制

本文深入解析了智能车竞赛轮腿穿越组‘定点排雷’科目的核心技术。从构建鲁棒的视觉识别系统,到融合编码器与IMU进行厘米级定位,再到实现框内高精度旋转的姿态控制,提供了一套完整的从感知到执行的闭环技术方案,助力参赛队伍攻克这一高难度科目。

weixin_29161719的博客 640

* & 的问题 (待整理)

资料:http://tieba.baidu.com/f?kz=1053435983 void InitStack( SqStack *&S) 浏览次数:3426次悬赏分:5|解决时间:2006-8-12 00:19|提问者:dangdangxww 为什么这个S形参前面用了* 和&呢?是怎么个用法,含义如何呀? 小弟在这先谢了,那位高手...

weixin_30545285的博客 777

模型性能评估之 Friedman 检验与 Nemenyi 后续检验

前言 当我们提出一种算法,需要知道我们的算法和现在已有的算法相比,性能是否更优的时候,就需要用到模型性能评估的方法。本篇博客介绍一种模型性能评估的方法:Friedman 检验与 Nemenyi 后续检验。 该方法的特点是:可以进行多个算法的比较。下面看看具体的使用: 具体使用 1. 计算序值 假定我们用 D1D_1D1​、D2D_2D2​ 、D3D_3D3​ 和 D4D_4D4​ 四个数据集对算法 AAA、BBB、CCC 进行比较。首先需要得到每个算法在每个数据集上的测试结果,可以是准确率,也可以是均方误差

蕾欧娜与26的博客 1万+

车载以太网抓包实战:100BASE-T1/1000BASE-T1高效监控方案解析

本文深入解析了车载以太网100BASE-T1/1000BASE-T1的高效抓包监控方案。针对智能汽车开发中的故障排查与性能测试需求,详细对比了交换机镜像、TAP分流和捕获模块三大主流方案的原理、核心优势与适用场景,并提供了基于实战经验的选型指南与操作避坑要点,帮助工程师精准定位网络问题。

desk3的博客 428

栈

栈的特性是:先进后出。栈的四个接口是1.栈顶。2.栈底。3.压栈。4.出栈。 递归的实现就是在模拟栈,数组是连续存放的,而链表是离散存放的。 无递归不编程。 #include void ten2two(int num)//十进制转二进制 { if (num != 0) { int m = num % 2; num = num / 2; //printf("%d", m);//

Mr_xiao_1的博客 348

顶会新宠!Gate+Attention创新思路发A会

性能提升:在Places2自然场景和CelebA-HQ人脸数据集上,与以往方法相比,该系统在自由形式掩码修复任务中取得了更高的质量和更低的误差(例如,平均ℓ1误差和ℓ2误差显著降低)。硬件效率提升:Griffin和Hawk在TPU-v3上的训练效率与Transformer相当,且在推理时具有更低的延迟和显著更高的吞吐量。门控卷积:提出了一种新的门控卷积机制,通过学习每个通道在每个空间位置的动态特征选择机制,解决了传统卷积将所有输入像素视为有效像素的问题。

2501_92785035的博客 975

数据结构期末总复习(一)绪论和线性结构

数据结构线性结构复习

小白有颗大白梦的博客 236

82、yolov11检测模型迁移瑞芯微rk3588和使用昇腾设备300i DUO卡推理 batch=1/3,支持昇腾NMS迁移npu推理

本文介绍了使用昇腾设备进行分割推理的测试流程,包括两种测试方式(cann+onnx和om)。首先验证300iDUO卡的可用性,随后创建Docker镜像和容器以搭建独立环境。通过从指定仓库拉取Ubuntu 20.04镜像,创建容器并映射目录。进入容器后安装必要组件(Python3、GCC等)和系统工具(pciutils、net-tools等),为后续模型转换和迁移做准备。整个流程旨在构建可交付给第三方的标准化测试环境。

sxj731533730 1204

18、未来医疗信息学中的太赫兹天线技术

本文探讨了太赫兹天线技术在医疗信息学中的关键作用,重点分析了分裂环谐振器和纳米结构光导天线(PCA)的设计与性能提升方法,介绍了相干与非相干太赫兹检测技术,并通过等效电路模型和数值模拟深入解析PCA工作机理。文章还展示了太赫兹技术在无创血糖监测、肿瘤检测等医疗诊断中的实验应用,总结了其非侵入性、高分辨率成像和多参数分析等优势,同时指出信号检测难、成本高和技术复杂等挑战。未来趋势包括设备小型化、效率提升及与人工智能融合,拓展至药物研发、皮肤与神经疾病诊断等领域,展现出变革医疗健康的巨大潜力。

milk8的博客 146

数据结构基础——栈

栈什么是栈栈的代码实现顺序栈的结构顺序栈的操作方法方法的实现InitStack__栈的初始化Push__入栈Top__获取栈顶数据Pop__弹出栈顶数据Empty__判空DestryStack__销毁栈链式栈的实现栈的应用中缀转后缀两个栈实现一个队列 什么是栈 关于栈,在 如何使用两个栈实现一个队列 中粗略介绍过,下面将详细接受栈以及栈代码的实现。 栈 符合 先进后出,后进先出!——函数调用堆栈,类似于弹匣的结构。 栈底: 栈的存储空间的最底下的位置。一般是一块空间的首地址。 栈顶: 动态变化的位置

XXXTENTAC1ON的博客 594

全志F1C100S/F1C200S学习笔记(11)——spi-flash 启动全流程适配烧录及踩坑指南

SPI Flash 系统编译 spi-flash 启动适配 分区规划: 分区序号 分区大小 分区作用 地址空间及分区名 mtd0 1MB (0x100000) spl+uboot 0x0000000-0x0100000 : “uboot” mtd1 64KB (0x10000) dtb文件 0x0100000-0x0110000 : “dtb” mtd2 4MB (0x400000) linux内核 0x0110000-0x0510000 : “kernel” mtd3 剩余 (

丨晋丨 1万+

数据结构—链栈

1.链栈的表示 链栈的存储结构与单链表的存储结构相同。由于栈是在栈顶进行删除和添加元素的,因此,将链表的首部作为栈顶是最方便的。而且没有必要像单链表那样为了操作简单而附加一个头结点。 在链栈中注意指针的方向是从栈顶指向栈底。 // 链栈的存储结构 typedef struct StackNode { int data; struct StackNode *next; }Sta...

小虾米编程 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据结构——链栈

的

顾明伟 1520

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

数据结构之链栈

链栈是一种基于链表结构实现的栈,栈是一种具有后进先出(LIFO)特性的数据结构,只允许在栈顶进行插入(入栈)和删除(出栈)操作。

菜鸟学习总结 1256

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数据结构之链栈实现

文章目录数据结构之链栈实现代码及思想测试截图 数据结构之链栈实现 代码及思想 #include <iostream> #include <cstdio> #include <cstdlib> using namespace std; #define ElemType int #define Status int #define OK 1 #define ERR...

李霁明的博客 619

【数据结构】之链栈的java实现

前言 最近参加一些校招,博主被问了很多数据结构的问题,其中很多问题面试官需要的答案不仅仅是需要你了解这些概念,而是需要你通过某种语言(C、C++、Java)把这种结构实现,同时还能根据公司的具体需求进一步优化。对于博主这样,数据结构功底薄弱的选手,最终结果只能“被面”。痛定思痛,现在痛苦狂补中。江湖中有句话“欠下的债终究要还的”。 链栈 栈的链式存储结构称为链栈。 在算法中要用到多个栈时,

博学而笃志,切问而近思 7180

数据结构——链栈(GIF图解)

一、链栈 前面学习了栈的顺序存储结构,现在来看看栈的链式存储结构,简称链栈.(示意图如下) 对于链栈来说,不存在栈满的情况,除非内存已经没有空间可以使用;但对于空栈来说,链表原定义是头指针指向空,那么链栈的空其实是 top=null 的时候。 二、链栈的实现 ...

weixin_43294413的博客 7885

【初学数据结构】链栈

数据结构之链栈

qq_62905657的博客 2959

【数据结构】链栈

链栈的实现与应用

widiot的博客 1003

《数据结构》之链栈

链栈 废话不多说,直接上代码实现。 #include <iostream> #define OK 1 #define ERROR 0 using namespace std; typedef int SElemType; typedef int Status; typedef struct StackNode { SElemType data; struct StackNode *next; }StackNode, *LinkStack; ...

M2534474759的博客 258

数据结构:链栈 代码实现

链栈 //和单链表相似,只不过只能在链表一侧进行增减元素 头文件 #include<stdio.h> //链栈---只能在表头插入删除 #include<stdlib.h> 代码实现 typedef struct LinkNode{ int data; struct LinkNode *next; }*LiStack; //栈类型定义 void PrintSt...

Xiaoxiaokezhan的博客 953

【数据结构】「栈」(顺序栈、共享栈、链栈)

【数据结构】「栈」(顺序栈、共享栈、链栈) 本文介绍了顺序栈的基本概念和实现方法。栈是一种后进先出(LIFO)的线性表,只允许在栈顶进行插入和删除操作。文章详细讲解了两种顺序栈的实现方式:一种是top指针指向栈顶元素(范围为-1到MaxSize-1),另一种是top指向栈顶元素后的位置(范围为0到MaxSize)。通过测试代码展示了栈的初始化、入栈、出栈、判空判满等基本操作,并对边界情况进行了验证。栈的典型应用场景包括函数调用、表达式求值等需要"后进先出"特性的场景。

仟墨(郑龙浩)的博客 1313

数据结构07--链栈超详解

链栈作为一种灵活且高效的数据结构,充分利用了指针的特性,使得栈的操作能够在动态内存中进行,避免了固定大小数组的局限性。通过实现基本操作如入栈、出栈和栈顶元素访问,我们不仅巩固了对链表和栈的理解,也为在更复杂的数据结构和算法中的应用奠定了基础。

weixin_69902486的博客 2002

数据结构 C/C++ 链栈

#include<stdio.h> typedef int datatype; typedef struct node //链栈的定义 { datatype data; struct node *next; }Stacknode,*Linkstack; Linkstack Init_Linkstack() //链栈置空...

Forward的博客 346
上一篇: 利用Javaweb(jsp)做一个具有登录注册查询等功能的系统网页之管理员操作页面(六(完))
下一篇: 约瑟夫环---两种解决方法
头秃代码奴
博客等级 码龄7年 251粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值