数据结构-链栈的c++实现

2023-11-04

#pragma once
#ifndef My_Head_H
	#define My_Head_H
	#include "G://code/c++/myhead.h"
#endif // !My_Head_H
template <typename ElemType>
class LinkStack
{
public:
	class Stack_Node
	{
	public:
		ElemType data;
		Stack_Node *next;
	};
	typedef Stack_Node* Nodepointer;

	//把栈置空
	void clear();

	//求栈中结点个数
	int Get_Length();

	//弹出栈顶结点
	Status Pop(ElemType& e);

	//压入数据为e的结点
	void Push(ElemType e);

	//以随机数填充i个结点
	void Random_Fill_Stack(int i);

	//打印所有节点
	void Display_Stack();

	//链栈构造函数
	LinkStack();

	//链栈析构函数
	virtual ~LinkStack();

protected:
	Nodepointer top;
};

template<typename ElemType>
void LinkStack<ElemType>::clear()
{
	Nodepointer s;
	while (top)
	{
		s = top;
		top = top->next;
		delete s;
	}
	top = NULL;
}

template<typename ElemType>
int LinkStack<ElemType>::Get_Length()
{
	Nodepointer s;
	int count = 0;
	s = top;
	while (s)
	{
		count++;
		s = s->next;
	}
	return count;
}

template<typename ElemType>
Status LinkStack<ElemType>::Pop(ElemType& e)
{
	Nodepointer s = top;
	if (!top) return ERROR;
	e = top->data;
	top = top->next;
	delete s;
	return OK;
}

template<typename ElemType>
void LinkStack<ElemType>::Push(ElemType e)
{
	Nodepointer s;
	s = new Stack_Node;
	s->data = e;
	s->next = top;
	top = s;
}

template<typename ElemType>
void LinkStack<ElemType>::Random_Fill_Stack(int i)
{
	for (int count = 0; count < i; count++)
	{
		Push(random(100));
	}
}

template<typename ElemType>
void LinkStack<ElemType>::Display_Stack()
{
	Nodepointer s = top;
	cout << "Here is all Stack Data:" << endl;
	while (s)
	{
		cout << "->" << s->data;
		s = s->next;
	}
	cout << endl;
	return;
}

template<typename ElemType>
LinkStack<ElemType>::LinkStack()
{
	top = NULL;
}

template<typename ElemType>
LinkStack<ElemType>::~LinkStack()
{
	clear();
}


myhead.h在另一篇博文里:https://blog.csdn.net/cwdben/article/details/105906918

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构-链栈的c++实现 的相关文章

  • mysql8 zip安装_windows10+mysql8.0.zip安装

    准备 环境 Windows 10 一 安装 1 解压zip包到安装目录 比如我的安装目录是 D Program MySQL 2 配置文件 在Windows系统中 配置文件默认是安装目录下的 my ini 文件 部分配置需要在初始安装时配置

随机推荐

  • t_1链表

    双指针 其实这是第一次接触这种算法概念 之前数据结构课堂上学习到的链表是非常基础和入门的 稍微进阶点的还得自己找资料学习 找题目练习 双指针 Two Pointers 指的是在遍历元素的过程中 不是使用单个指针进行访问 而是使用两个指针进行
  • 【Kaggle】【Titanic】【AutoGluon】测试

    文章目录 安装 训练 预测 提交方式 Competition首页 Notebook首页 结果 Reference 安装 pip install autogluon 安装autogluon 训练 from autogluon tabular
  • 第17章 站点构建

    mini商城第17章 站点构建 一 课题 站点构建 二 回顾 1 Gateway限流 2 Nginx限流 3 Redis集群应用 4 缓存灾难处理 三 目标 1 Sentinel Sentinel介绍 Sentinel核心功能 Sentin
  • 深度学习之学习(3-3)YOLOV2

    参见 目标检测论文阅读 YOLOv2 知乎 二 更快更准 YOLOv2 2 1 简介 2017年 作者 Joseph Redmon 和 Ali Farhadi 在 YOLOv1 的基础上 进行了大量改进 提出了 YOLOv2 和 YOLO9
  • 少样本NER的方法

    论文 Few Shot Named Entity Recognition A Comprehensive Study 速看 微软 韩家炜课题组的全面调研 NER标注数据少 怎么办 论文总结了少样本ner的三种方法 方案1 原型方法 Prot
  • Qt应用程序设计(二):窗口与部件

    一 部件基类继承表 二 窗口部件QWidget 1 窗口与子部件 窗口部件 Widget 简称部件 是Qt中建立用户界面的主要元素 像主窗口 对话框 标签 按钮 文本输入框等都是窗口部件 这些部件可以接受用户输入 显示数据和状态信息 并且在
  • Qt中出现错误:Cannot find Makefile. Check your build settings.

    错误 Cannot find Makefile Check your build settings Error while building deploying project untitled1 kit Desktop Qt 5 14 1
  • __attribute__((visibility(“default“)))含义

    GCC的visibility属性用来控制 so文件的符号表 也就是控制外部能不能找到符号调用 比如函数 变量 模板 类等 符号表分静态的 symtab 和动态的 dynsym 一个对应链接视图另一个对应执行视图 设置为 hidden 符号将
  • 卷积神经网络中的即插即用模块

    卷积神经网络中的即插即用模块 是首发于GiantPandaCV公众号的电子书教程 由pprp总结并整理了常见的即插即用模块 可以分为注意力模块和其他模块 通过这篇电子书中的模块结合 从零开始学习YOLOv3 中的在YOLOv3模型中添加At
  • L3-018 森森美图 (30 分)

    题目 题目链接 题解 BFS 先看看样例咋出来的吧 判断某个坐标属于起点终点连线的哪一侧的时候 我们采用是将点代入起点终点的两点式中根据正负值判断 两次bfs更新起点到终点的 距离 bfs每次扩展一个点 用起点到该点的 距离 更新其八个方向
  • 详解Java中native方法的使用

    和C联合开发的时候用的是Native 用native关键字说明这个方法是一个原生函数 即这个方法用C C语言实现 编译成一个DLL 由java调用 本文介绍了java中native方法的使用 有兴趣的朋友来看看吧 今天在网上学习的时候 碰到
  • 计算机毕设大作业《基于SpringBoot的实验室管理系统》

    项目背景 社会的发展和科学技术的进步 互联网技术越来越受欢迎 网络计算机的生活方式逐渐受到广大人民群众的喜爱 也逐渐进入了每个用户的使用 互联网具有便利性 速度快 效率高 成本低等优点 因此 构建符合自己要求的操作系统是非常有意义的 本文从
  • mysql数据库基本知识

    本篇笔记主要是总结整理mysql数据库基本知识 需要掌握的主要包括通过信息 gt 画出ER图 gt 由ER图创建数据库表 sql语句 1 概念模型 ER图 图片修改为 2 用sql语句 实现增删查改建等操作 1 建 CREATE TABLE
  • python float转str_python 数据类型互相转换

    关注本号 教你更多python知识 python中 有6种数据类型 那它们之间能不能互相转换 怎样转换 这篇就来说说 数据类型之间的转换 数据类型之间的转换 主要有以下函数 1int 将其它类型转为整型 int x 0 gt integer
  • centos7 下载安装pycharm以及破解

    下载 wget P root opt https download jetbrains com python pycharm professional 2019 1 3 tar gz 解压 cd root opt tar xzvf pych
  • 前端---【nodejs的介绍与Buffer缓冲器的介绍】

    目录 一 node js的介绍 1 1node js是什么 1 2node js的作用 二 运行node js文件 三 buffer 缓冲器 3 1 buffer介绍 3 2特点 3 3创建Buffer的四种方式 3 1创建Buffer第一
  • virt-install: 未找到命令...

    root localhost t virt install bash virt install 未找到命令 yum install libguestfs tools yum install virt install noarch
  • blender简单骨骼绑定

    blender2 90 1 设置3D游标 shift 鼠标右键设置到想要的位置 或者设置到原点 shift s gt Cursor to world origin 或者shift c 2 创建测试的物体 一个长方形 shift a mesh
  • 《UnityAPI.AnimatorStateInfo动画器状态信息》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+IsName+IsTag+tag+立钻哥哥++OK++)

    UnityAPI AnimatorStateInfo动画器状态信息 版本 作者 参与者 完成日期 备注 UnityAPI AnimatorStateInfo V01 1 0 严立钻 2020 07 02 UnityAPI AnimatorS
  • 数据结构-链栈的c++实现

    pragma once ifndef My Head H define My Head H include G code c myhead h endif My Head H template