数据结构题型10-链栈

news2024/11/23 10:22:42
//参考博客:https://blog.csdn.net/weixin_37716512/article/details/104068102
#include <iostream>  //引入头文件
using namespace std;

typedef int Elemtype;

#define Maxsize 10
#define ERROR 0
#define OK    1

typedef struct Linknode
{
	Elemtype data;   // 数据域
	struct Linknode *next;   //指针域
}Linknode,* LinkStack;


void InitStack(LinkStack& L)
{
	L = (LinkStack)malloc(sizeof(Linknode));
	L->next = NULL;
}

bool StackEmpty(LinkStack L)
{
	if (L->next == NULL)   //堆空
	{
		cout<<"栈为空"<<endl;
		return ERROR;
	}
	else              //不空
	{
		cout << "栈不为空" << endl;
		return OK;
	}
}

bool Push(LinkStack &L, Elemtype e)
{
	Linknode *s = (LinkStack)malloc(sizeof(Linknode));
	s->data = e;
	s->next = L->next;
	L->next = s;
	return OK;
}

bool Pop(LinkStack& L, Elemtype &e)
{
	if (L->next == NULL)
	{
		cout << "栈为空" << endl;
		return ERROR;
	}
	Linknode* p = L->next;
	e = p->data;
	L->next = p->next;
	cout << "出栈元素值为: " << e << endl;
	free(p);
	return OK;
}

bool GetTop(LinkStack& L, Elemtype& e)
{
	if (L->next == NULL)
	{
		cout << "栈为空" << endl;
		return ERROR;
	}
	e = L->next->data;
	cout << "栈顶元素值为: " << e << endl;
	return OK;
}

void PrintStack(LinkStack L)
{
	Linknode* p= L->next;
	while (p != NULL)
	{
		cout << "|______" << p->data << "______|" << endl;
		p = p->next;
	}
}
int main(void)
{
	LinkStack S = NULL;
	InitStack(S);
	StackEmpty(S);
	Push(S, 1);
	Push(S, 2);
	Push(S, 3);
	Push(S, 4);
	StackEmpty(S);
	PrintStack(S);
	int e = 0, x = 0;
	Pop(S, e);
	PrintStack(S);
	GetTop(S, x);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1041254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jar包在linux服务器已经运行好,但是访问不到地址

jar包在linux服务器已经运行好&#xff0c;但是访问不到地址 1.将jar包已经上传到linux服务器&#xff0c;并且已经启动 2.但是在本地访问的时候&#xff0c;访问不到,云服务的的安全组策略也开放了相对应的端口。 3.解决方案 修改防火墙开放的接口 iptables -I INPUT -p t…

监控与运维,主流it运维监控工具

IT监管和运行维护已成为企业经营的关键环节。本文将详细介绍IT监管和运行维护的必要性、主要功能和实施策略&#xff0c;帮助企业实现数据安全和高效运行。 IT监管和运行维护的必要性 确保企业数据安全 IT监控系统可以实时监控企业网络、服务器、存储等关键设备的运行情况&…

[架构之路-222]:邮件服务与协议:POS3和SMTP

目录 网络架构&#xff1a; 联系&#xff1a; 区别&#xff1a; 网络架构&#xff1a; SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;和 POP3&#xff08;Post Office Protocol version 3&#xff09;是用于电子邮件传输和接收的两种不同的协议。它们在不同的…

两大电商为苹果作证,iPhone15销量倍增,销量遥遥领先并非虚言

苹果的零售店再次出现排队抢购iPhone15的现象&#xff0c;显示出iPhone15的受欢迎程度&#xff0c;不过也有人质疑排队现象&#xff0c;不过日前两大电商则为苹果提供了证明&#xff0c;显示出iPhone15的销售情况确实相当火爆。 某外卖平台的电商业务公布的数据指北上广深杭五大…

从零实现邮件中继服务

背景目的验证准备前提前置过程网络约束节点信息账号信息 具体验证过程转发测试相关问题 背景 在当前现场环境中&#xff0c;我们面临着一个重要的问题。我们的系统部署在一个内网环境中&#xff0c;邮件告警模块需要连接公网的邮件服务器以便发送邮件来及时通知我们关键事件和…

【KMP算法】C++

KMP算法的原理是通过构建部分匹配表&#xff0c;来利用已经匹配过的信息&#xff0c;避免不必要的回溯。部分匹配表是一个长度与模式字符串相等的数组&#xff0c;用于记录在每个位置上的最长公共前后缀的长度。 这样图片完全表达了KMP算法的核心思想&#xff0c;出处来自添加链…

【postgresql】ERROR: cannot alter type of a column used by a view or rule

修改字段类型 由varchar 改为int8。 具体sql alter table company alter column city_id type int8 using city_id::int8; 返回错误信息 > ERROR: cannot alter type of a column used by a view or rule DETAIL: rule _RETURN on view search_qy depends on column …

什么是LIMS(实验室信息管理系统)?LIMS软件有哪些功能?

LIMS 是实验室信息管理系统&#xff08;Laboratory Information Management System&#xff09;的缩写。LIMS 是一种软件&#xff0c;它可以帮助实验室收集、组织和跟踪其数据。这种系统可以提高实验室的效率&#xff0c;同时确保数据的准确性和一致性。 LIMS 可以处理各种实验…

安装Python3.x--Windows

1 下载安装包 确定安装是干什么&#xff0c;要下哪个版本&#xff08;如果是配置项目环境&#xff0c;最好按项目需求的版本来装&#xff09; 1.1 官网链接 https://www.python.org 最新版本 指定版本 2 安装说明 点击下载exe&#xff0c;运行自定义安装路径&#xff0c;下…

go字符串拼接方式及性能比拼

在golang中字符串的拼接方式有多种&#xff0c;本文将会介绍比较常用的几种方式&#xff0c;并且对各种方式进行压测&#xff0c;以此来得到在不同场景下更适合使用的方案。 文章目录 1、go字符串的几种拼接方式1.1 fmt.Sprintf1.2 运算符拼接1.3 strings.Join1.4 strings.Bui…

使用redis实现分布式锁

为什么需要分布式锁 在一个分布式系统中&#xff0c;也会涉及多个节点访问同一个公共资源的情况&#xff0c;此时就需要通过锁来做互斥控制&#xff0c;避免出现类似于“线程安全”的问题&#xff0c;而java的synchronized这样的锁只能在当前进程中生效&#xff0c;在分布式的…

【Go】Golang环境配置与语法基础

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Golang环境配置与示例。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路…

【Pycharm/Anaconda配置环境记录】

文章目录 1、Pytorch配置2、mmcv配置 1、Pytorch配置 查看虚拟环境创建虚拟环境 conda env list&#xff1a;查看虚拟环境 conda create --name env_name python3.7&#xff1a;创建虚拟环境 conda activate env_name&#xff1a;激活/进入该虚拟环境 查看自己的CUDA版本以及P…

element-plus-自定义Dialog样式

实现如下 <template><h3>dialog3 test 全局</h3><el-button type"primary" size"default" click"show">全局弹窗</el-button><div class""><!-- 弹窗 --><el-dialog v-model"visi…

使用 Matter-SDK 快速搭建 Matter 环境 (Linux)

Matter 作为一个统一的智能家居互联协议&#xff0c;凭借其高兼容性的特点&#xff0c;正逐渐打破各个智能家居之间的壁垒。乐鑫作为在 Matter 项目发布之初的早期成员&#xff0c;提供了一套开源、完整、易用的 Matter-SDK。 乐鑫的 Matter-SDK 是建立在开源 Matter-SDK 之上…

MySQL - order by排序查询 (查询操作 四)

功能介绍&#xff1a;order by&#xff1a;对查询结果进行排序&#xff0c;执行顺序在查询完结果执行&#xff08;比如where后&#xff09; 排序方式&#xff1a;ASC&#xff1a;升序&#xff08;默认&#xff0c;不用指定&#xff09; DESC&#xff1a;降序 语法&#x…

Android跨进程通信:Binder机制原理

目录 1. Binder到底是什么&#xff1f; 2. 知识储备 2.1 进程空间划分 2.2 进程隔离 & 跨进程通信&#xff08; IPC &#xff09; 2.3 内存映射 2.3.1 作用 2.3.2 实现过程 2.3.3 特点 2.3.4 应用场景 2.3.5 实例讲解 ① 文件读 / 写操作 ② 跨进程通信 3. Bi…

【Java 基础篇】Java 图书管理系统详解

介绍 图书管理系统是一种用于管理图书信息、借阅记录、用户信息等的软件系统。它可以帮助图书馆、书店或个人管理和组织图书资源&#xff0c;提供了方便的借阅和查询功能。在这篇博客中&#xff0c;我们将详细介绍如何使用Java编程语言创建一个简单的图书管理系统。 功能需求…

SpringMVC 学习(一)Servlet

1. Hello Servlet (1) 创建父工程 删除src文件夹 引入一些基本的依赖 <!--依赖--> <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test<…

大模型lora微调-chatglm2

通义千问大模型微调源码&#xff08;chatglm2 微调失败&#xff0c;训练通义千问成功&#xff09;&#xff1a;GitHub - hiyouga/LLaMA-Efficient-Tuning: Easy-to-use LLM fine-tuning framework (LLaMA-2, BLOOM, Falcon, Baichuan, Qwen, ChatGLM2)Easy-to-use LLM fine-tun…