栈源代码(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小节. 什么是栈 栈是一种“后进先出”的数据结构,它相当于一个容器,当需要往容器里面添加元素时只能放在最上面的一个元素之上,需 ...
随机推荐
- 在行情一般的情况下,就说说23级应届生如何找java工作
Java应届生找工作,不能单靠背面试题,更不能在简历中堆砌和找工作关系不大的校园实践经历,而是更要在面试中能证明自己的java相关商业项目经验.其实不少应届生Java求职者不是说没真实Java项目经验 ...
- Vue-treeselect 实现下拉树懒加载,末节点不要箭头
项目需要,可选择的下拉树,由于数据过多,显示要有层级感,所以使用了懒加载模式 vue-treeselect官网:https://www.vue-treeselect.cn/ 1.前端代码 1.下载依赖 ...
- OO第一次大作业
前言 前言的前言 这是我的第一篇blog,有点小激动,我还找教程设置了一下我的背景,本来还想弄个页面小宠物,但是看了一下感觉有点复杂,下次一定.如果对我blog的内容有任何修正或者建议可以评论让我知道 ...
- javascript中的垃圾回收机制的一些知识记录
调用栈中的数据是如何回收的 原始类型的数据会分配到栈中 引用类型的数据会被分配到堆中 在执行代码的过程中,如果遇到了一个函数,js引擎会创建该函数的执行上下文,并将该函数的上下文压入调用栈中,与此同时 ...
- Mapbox—geocoder搜索地点error eaching the server
Mapbox-geocoder搜索地点error eaching the server --There was an errorr eaching the server 环境说明: vue3.3.4 ...
- VSCode插件:自动生成注释——koroFileHeader
配置 用户设置打开 settings.json 添加如下代码: "fileheader.cursorMode": { }, "fileheader.customMade& ...
- koa搭建nodejs项目并注册接口
使用nodejs注册接口逻辑处理会比较复杂,直接通过express或者koa能够简化开发流程,这里记录用koa来搭建nodejs项目并注册接口,对koa不太熟悉的话可以参考这一篇.让nodejs开启服 ...
- docker安装phpmyadmin
下载docker镜像 docker pull phpmyadmin/phpmyadmin 创建容器 # 假设MySQL服务器的地址为:192.168.0.10,端口3306 # 通过3360端口访问p ...
- Dokcer学习之旅(2)——Dockerfile基础应用
什么是Dockerfile? 从docker commit 的学习中,我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本, ...
- 使用MediatR和FluentValidation实现CQRS应用程序的数据验证
本文将重点介绍如何通过MediatR的管道功能将FluentValidation集成到项目中实现验证功能. 什么是CQRS? CQRS(Command Query Responsibility Seg ...