码迷,mamicode.com
首页 > 其他好文 > 详细

栈类模板

时间:2015-10-31 14:17:45      阅读:256      评论:0      收藏:0      [点我收藏+]

标签:

栈是只能从一端访问的线性群体,可以访问的这一端称栈顶,另一端称栈底。栈是一种后进先出的数据结构。

栈示意图

技术分享

栈的应用举例——表达式处理

技术分享

栈的基本状态

  • 栈空
  • 栈满
  • 一般状态

栈空

  • 栈中没有元素(以数组容纳的栈为例)

技术分享

栈满

  • 栈中元素个数达到上限(以数组容纳的栈为例)

技术分享

一般状态

  • 栈中有元素,但未达到栈满状态(以数组容纳的栈为例)

技术分享

栈的基本操作

  • 初始化
  • 入栈
  • 出栈
  • 清空栈
  • 访问栈顶元素
  • 检测栈的状态(满、空)

例9-8 栈类模板

//Stack.h
#ifndef STACK_H
#define STACK_H
#include <cassert> 
template <class T, int SIZE = 50>
class Stack {
private:
    T list[SIZE];
    int top;
public:
    Stack();
    void push(const T &item);
    T pop();
    void clear();
    const T &peek() const;
    bool isEmpty() const;
    bool isFull() const;
};

//模板的实现
template <class T, int SIZE>
Stack<T, SIZE>::Stack() : top(-1) { }   
template <class T, int SIZE>
void Stack<T, SIZE>::push(const T &item) {  
    assert(!isFull());  
    list[++top] = item; 
}
template <class T, int SIZE>
T Stack<T, SIZE>::pop() {   
    assert(!isEmpty()); 
    return list[top--]; 
}
template <class T, int SIZE>
const T &Stack<T, SIZE>::peek() const {
    assert(!isEmpty()); 
    return list[top];   //返回栈顶元素
}
template <class T, int SIZE>
bool Stack<T, SIZE>::isEmpty() const {
    return top == -1;
}
template <class T, int SIZE>
bool Stack<T, SIZE>::isFull() const {   
    return top == SIZE - 1;
}

template <class T, int SIZE>
void Stack<T, SIZE>::clear() {  
    top = -1;
}

#endif  //STACK_H

 

栈类模板

标签:

原文地址:http://www.cnblogs.com/little-aladdin/p/4925428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!