栈源代码(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小节. 什么是栈 栈是一种“后进先出”的数据结构,它相当于一个容器,当需要往容器里面添加元素时只能放在最上面的一个元素之上,需 ...
随机推荐
- Typecho handsome主题一言接口修改
说明 handsome主题默认使用的是 https://v1.hitokoto.cn 一言接口 博主感觉不是太满意,于是想换成自己的"一言"服务接口 首先需要自己搭建一个" ...
- Maven项目配置
pom.xml配置 配置编码格式为UTF-8 <properties> <project.build.sourceEncoding>UTF-8</project.buil ...
- [译]使用Python和Dash 创建一个仪表盘(上)
介绍 在数据科学和分析的领域,数据能力的释放不仅是通过提取见解的方式, 同时也要能通过有效的方式来传达见解.这就是数据可视化发挥见解的地方. 数据可视化是信息和数据的可视化呈现. 它使用可视化元素,如 ...
- 最为常用的Laravel操作(2)-路由
基本路由 // 接收一个 URI 和一个闭包 Route::get('hello', function () { return 'Hello, Laravel'; }); // 支持的路由方法 Rou ...
- 基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发
基于Avalonia 11.0.0+ReactiveUI 的跨平台项目开发2-功能开发 项目简介:目标是开发一个跨平台的AI聊天和其他功能的客户端平台.目的来学习和了解Avalonia.将这个项目部署 ...
- 2021-3-9 保存csv格式文件
public void SaveCSV(DataTable dt, string fullPath) { FileInfo fi = new FileInfo(fullPath); if (!fi.D ...
- ACl与ACL实验
ACl与ACL实验 ACL 1,ACL概述及 产生的背景 ACL: access list 访问控制列表 2,ACL应用 ACL两种应用: 应用在接口的ACL-----过滤数据包(原目ip地址,原目 ...
- 《Web安全基础》01. 基础知识
@ 目录 1:概念名词 1.1:域名 1.2:DNS 1.3:网站开发语言 1.4:后门 1.5:Web 1.6:Web 相关安全漏洞 2:数据包 2.1:HTTP 2.2:HTTPS 2.3:请求数 ...
- 在本地运行Kusto服务器
我喜欢Kusto (或商用版本 Azure Data Explorer,简称 ADX) 是大家可以有目共睹的,之前还专门写过这方面的书籍,请参考 大数据分析新玩法之Kusto宝典, 很可能在今年还会推 ...
- 深入探究API接口
作为程序员,我们经常会遇到需要获取外部数据或调用外部服务的情况.而API(Application Programming Interface,应用程序编程接口)接口就是这样的一种机制,它允许我们的应用 ...