数据结构 栈

Posted Readtears

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构 栈相关的知识,希望对你有一定的参考价值。

栈结构,通俗易懂,特点:先进后出,后进先出。

以下,仅对于栈结构常用的操作进行实现

包括:

        入栈(push),出栈(pop),判空(empty),栈顶元素(GetTop)

#include <iostream>
using namespace std;

template<class T>
class Stack

public:
    Stack(T size) // 初始化数组大小
        :top(0)  //栈顶指针
        , _size(size)
    
        _array = new T[size]; // top指向最后一个元素时,再往下跳会越界,所以多开一个
    

    ~Stack()
    
        if (_array)
        
            delete[] _array;
        
    

public:
    void Push(const T val)
    
        if (top >= _size)
        
            cout << "overflow" << endl;
            return;
        
        else
        
            _array[top] = val;
            top++;
        
    

    T Pop()
    
        T ret;
        if (top < 0)
        
            cout << "underflow" << endl;
            return -1;
        
        else
        
            top--;
            ret = _array[top];
        
        return ret;
    

    bool isEmpty()
    
        return top == 0;
    

    T Top()
    
        if (!isEmpty())
        
            return _array[top - 1];
        
        else
        
            cout << "error:stack is empty!" << endl;
        
    

    void Show()
    
        if (isEmpty())
        
            cout << "stack has no data!" << endl;
            return;
        
        for (size_t i = 0; i < top; i++)
        
            cout << _array[i] << " ";
        
        cout << endl;
    

private:
    size_t top;
    size_t _size;
    T* _array;
;

void Test()

    Stack<int> stk(5);

    stk.Push(1);
    stk.Push(2);
    stk.Push(3);
    stk.Push(4);
    stk.Push(5);

    stk.Show();
    cout << stk.Top() << endl;

    cout << stk.Pop() << endl;
    cout << stk.Pop() << endl;
    cout << stk.Pop() << endl;

    cout << stk.Top() << endl;
    stk.Show();



int main()

    Test();

    system("pause");
    return 0;

栈结构是最简单的数据结构,很多数据结构都会用到栈结构,所以简单的栈结构常用的操作需掌握。


若有纰漏,欢迎指正

本文出自 “Vs吕小布” 博客,请务必保留此出处http://survive.blog.51cto.com/10728490/1768289

以上是关于数据结构 栈的主要内容,如果未能解决你的问题,请参考以下文章

前端技术栈都有哪些

程序员的“认知失调”--[ 不在为自己的错误做辩护 ]

JVMJVM系列之垃圾回收

初学数组

ansible常用的模块(有疑问,纰漏的欢迎大家留言)

服务器服务器租用后如何高效管理,不出纰漏?