栈源代码(c++)
stack.h
#ifndef STACK_H_
#define STACK_H_
#include<iostream>
template<class T>
struct Node
{
T data;
Node<T>* next;
};
template<class T>
class Stack
{
private:
Node<T>* top;
public:
Stack() { top = nullptr; }
~Stack();
void Push(T x);
void Pop();
T GetTop();
bool Empty();
void Print();
};
template<class T>
Stack<T>::~Stack()
{
Node<T>* p = top;
while (p)
{
top = p;
p = p->next;
delete top;
}
}
template<class T>
void Stack<T>::Push(T x)
{
Node<T>* p = new Node<T>;
p->data = x;
p->next = top;
top = p;
}
template<class T>
void Stack<T>::Pop()
{
if (Empty())throw"Empty";
Node<T>* temp = top;
top = top->next;
delete temp;
}
template<class T>
T Stack<T>::GetTop()
{
return top->data;
}
template<class T>
bool Stack<T>::Empty()
{
return (top == nullptr ? true : false);
}
template<class T>
void Stack<T>::Print()
{
Node<T>* p = top;
while (p)
{
std::cout << p->data << " ";
p = p->next;
}
std::cout << std::endl;
}
#endif // !STACK_H_
UseStack.cpp
#include<iostream>
#include"stack.h"
int main()
{
using std::cout;
using std::endl;
Stack<int> P1;
for (int i = 1; i <= 10; i++)
{
P1.Push(i);
}
if (P1.Empty())
{
std::cout << "empty\n";
}
else
{
cout << "原有:\n";
P1.Print();
P1.Pop();
cout << "After Delete:\n";
P1.Print();
cout << "栈顶:" << P1.GetTop();
}
return 0;
}
栈源代码(c++)的更多相关文章
- Linux内核网络栈源代码分析
http://blog.csdn.net/column/details/linux-kernel-net.html
- Linux内核--网络栈实现分析(一)--网络栈初始化
本文分析基于内核Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7488828 更多请看专栏, ...
- Linux内核--网络栈实现分析(一)--网络栈初始化--转
转载地址 http://blog.csdn.net/yming0221/article/details/7488828 作者:闫明 本文分析基于内核Linux Kernel 1.2.13 以后的系列博 ...
- TCP协议可靠性数据传输实现原理分析
http://blog.csdn.net/chexlong/article/details/6123087 TCP 协议是一种面向连接的,为不同主机进程间提供可靠数据传输的协议.TCP 协议假定其所使 ...
- 3000本IT书籍下载地址
http://www.shouce.ren/post/d/id/112300 黑客攻防实战入门与提高.pdfhttp://www.shouce.ren/post/d/id/112299 黑 ...
- Linux 内核协议栈 学习资料
终极资料 1.<Understanding Linux Network Internals> 2.<TCP/IP Architecture, Design and Implement ...
- 网络协议栈学习(二)创建 socket
下面通过学习linux 1.2.13源码进一步理解socket通信机制.对该版本源码的学习主要参考<Linux内核网络栈源代码情景分析>(曹桂平 编著). 要理解socket的本质,就要理 ...
- USB编程概念
RE:USB编程概念 >请你指导我如何学习USB虚拟COM端口PROGRAMM,什么是我们needto有(如硬件和软件)的东西. USB是一个典型的复杂的协议栈,在协议的协议.这是很难完全实现 ...
- 从源代码分析modelDriven拦截器和params拦截器和拦截器prepare 和paramsPrepareParamsStack拦截器栈(让你的Struts2代码更简洁——如何培养框架设计能力
源代码文件:Web App Libraries/struts2-core-2.3.15.3.jar/struts-default.xml 拦截器modelDriven: <interceptor ...
- go语言调度器源代码情景分析之四:函数调用栈
本文是<go调度器源代码情景分析>系列 第一章 预备知识的第3小节. 什么是栈 栈是一种“后进先出”的数据结构,它相当于一个容器,当需要往容器里面添加元素时只能放在最上面的一个元素之上,需 ...
随机推荐
- Matlab背景颜色修改
背景 将修改内容添加到matlab的matlab.prf文件中,文件路径为在matlab中运行prefdir的结果,直接添加这些内容保存就好. github主题制作地址,里面有多种matlab主题配色 ...
- 1.简述Hibernate的工作原理。
(1).首先,Configuration读取Hibernate的配置文件和映射文件中的信息,即加载配置文件和映射文件,并通过Hibernate配置文件生成一个多线程的SessionFactory对象: ...
- 关于在modelsim中 仿真 ROM IP核 读取不了 mif文件 的解决方法
在modelsim中 仿真 ROM IP核 读取不了 mif文件 . 出现状况: 显示无法打开 rom_8x256.mif 文件 .点开modelsim下面文件的内存列表,可看到内存全为0. 查看自身 ...
- Confluence 挖矿病毒 升级现有系统
Confluence 挖矿病毒 升级现有系统 背景 服务器很多服务都很卡,通过检查发现是一起运行的confluence异常,被挖矿病毒挖矿,华为云和官网也有说明. 知道问题之后,处理方式就是将现有的问 ...
- 【教程】AWD中如何通过Python批量快速管理服务器?
前言 很多同学都知道,我们常见的CTF赛事除了解题赛之外,还有一种赛制叫AWD赛制.在这种赛制下,我们战队会拿到一个或多个服务器.服务器的连接方式通常是SSH链接,并且可能一个战队可能会同时有多个服务 ...
- nacos系列:简介和安装
目录 版本选择 安装 windows安装 centos安装 mysql方式存储 官网:https://nacos.io github:https://github.com/alibaba/nacos ...
- 快速解决 const 与 typedef 类型组合时 ,const修饰谁的问题
C++使用typedef 给复合类型定义别名时,与const结合会产生看似"令人困惑"的类型推定,例如 typedef char* pstring; const pstring c ...
- IDApython的学习
IDApython的学习 我的IDA情况:IDA7.7,idapython3.8 这个可以作为文件导入和命令行内输入,我一般习惯命令行 这里要注意是python不是IDC 访问原数据 idc.get_ ...
- 带你读论文丨S&P21 Survivalism: Living-Off-The-Land 经典离地攻击
本文分享自华为云社区<[论文阅读] (21)S&P21 Survivalism: Living-Off-The-Land经典离地攻击>,作者: eastmount . 摘要 随着恶 ...
- 《Kali渗透基础》10. 提权、后渗透
@ 目录 1:提权 2:Admin 提权为 System 2.1:at 2.2:sc 2.3:SysInternal Suite 2.4:进程注入提权 3:抓包嗅探 4:键盘记录 5:本地缓存密码 5 ...