堆栈stack源码

/**
stack.h

*****/

#include <iostream>
using namespace std;

template <class T>
class Stack
{
public:
Stack(int maxsize = 10);
~Stack(){delete stack;}

T Top();
void push(const T & x);
void pop();
bool empty();

private:
int top;
T * stack;
int maxtop;
};

/**
stack.cpp

**/

#include "stack.h"
template <class T>
Stack::Stack(int maxsize)
{
maxtop = maxsize;
top = -1;
stack = new T[maxsize];
}

template <class T>
bool Stack::empty()
{
if (top == -1)
{
return true;
}
return false;
}

template <class T>
T Stack::top()
{
return stack[top];
}

template <class T>
void Stack::push (const T & x)
{
top++;
stack[top] = x;
}

template <class T>
void Stack::pop()
{
top--;
}

原文地址:https://blog.51cto.com/wenxuehui/2368519

时间: 2024-10-12 09:13:16

堆栈stack源码的相关文章

Stack源码解析

Stack介绍: 堆栈(Stack)是一个元素序列.盾战中唯一能被删除.访问或修改的元素是最近插入的元素.这个元素就是位于堆栈顶部的那个元素. 举例来说,自助餐厅的盘子架就是一个由盘子构成的堆栈.增加和移除操作只能在顶部进行.为了把它重新摆放,刚刚放到架子上的盘子将在下一次被移动.这种堆栈属性的定义有时简称为"后进先出",或者LIFO.和这种观点相对应,我们把插入称为压栈(push),删除称为弹栈(pop).为了逗以p字母开头,我们把得到栈顶元素的操作称为浏览(peek). publi

Java Stack源码分析

Stack简介 Stack是栈.它的特性是:先进后出(FILO, First In Last Out).java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表.当然,我们也可以将LinkedList当作栈来使用.Stack的继承关系 java.lang.Object ? java.util.AbstractCollection<E> ? java.util.AbstractList<E>

STL 之 stack 源码剖析

G++ 2.91.57,cygnus\cygwin-b20\include\g++\stl_stack.h 完整列表 /* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fe

【源码】Vector、Stack源码解析

注:以下源码基于jdk1.7.0_11 Vector算是一个历史遗留下来的类,现在已基本被ArrayList取代.本文出于学习的目的来分析下这个类. 从图上可以看出Vector和ArrayList同样都直接继承于AbstractList,说明这两者功能上还是很相像的,事实也正是如此. 下面我们依然通过源码的方式解读Vector这个类. public class Vector<E> extends AbstractList<E> implements List<E>, R

List之Stack源码分析

源码版本为JDK1.7.0_75. 该类继承自Vector,说明该类是可克隆的.可序列化的,且是同步的. public class Stack<E> extends Vector<E> 构造函数 public Stack() { } 入栈 /** * 将一个元素放入栈顶,通过vector类的addElement方法实现 * Pushes an item onto the top of this stack. This has exactly * the same effect as

Vector和Stack源码分析/List集合的总结

序言 这篇文章算是在这list接口下的集合的最后一篇了,前面ArrayList.LinkedList都已经讲解完了,剩下就Vector和Vector的子类Stack啦.继续努力.一步一个脚印, --WH 扩展 学习vector,需要一些多线程的知识,这里比较杂,主要讲解一下等会会用到的 1.锁机制:对象锁.方法锁.类锁 对象锁就是方法锁:就是在一个类中的方法上加上synchronized关键字,这就是给这个方法加锁了. 类锁:锁的是整个类,当有多个线程来声明这个类的对象的时候将会被阻塞,直到拥有

Java集合之Stack 源码分析

1.简介 栈是数据结构中一种很重要的数据结构类型,因为栈的后进先出功能是实际的开发中有很多的应用场景.Java API中提供了栈(Stacck)的实现,简单使用如下所示 package com.test.collections; import java.util.Stack; public class StackTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated m

java Stack 源码

Stack类继承自Vector类 , 其大部分功能在Vector中已经提供支持! package java.util; public class Stack<E> extends Vector<E> {     public Stack() {     }     public E push(E item) {         addElement(item);         return item;     }         public synchronized E pop

C# Stack源码剖析

源代码版本为 .NET Framework 4.6.1 本系列持续更新,敬请关注 有投入,有产出. (注:非基础性,主要涉及Stack的实现原理) 水平有限,若有不对之处,望指正. Stack(栈)表示对象的后进先出 (LIFO) 集合.实现了ICollection接口. 概念 定义:限定仅在表尾进行插入或删除操作的线性表,表尾对应栈顶,表头对应栈底,不含元素的栈称为空栈. 入栈:往栈顶插入一个元素. 出栈:在栈顶删除一个元素 元素的操作只能在栈顶进行,最后入栈的元素最先出栈,结构图如下: 进入