C++实现堆栈数据结构(使用vector容器)

馋奶兔 提交于 2019-11-29 08:28:42

本文使用vector容器构建了一个堆栈数据结构,本程序由三个文件构成,Stack_Vectors.hpp定义了这个类,Stack_Vectors.cpp中构建了各成员函数。main.cpp测试了该程序。本程序使用Xcode编译,其中,头文件源码如下:

//
//  Stack_Vectors.hpp
//  堆栈(vector)
//
//  Created by lq on 2019/9/9.
//  Copyright © 2019 Mr.liang. All rights reserved.
//

#ifndef Stack_Vectors_hpp
#define Stack_Vectors_hpp

#include <vector>
class stack_vectors
{
private:
    std::vector<int> array;
    int stack_size;
public:
    stack_vectors();
    ~stack_vectors();
    stack_vectors(const stack_vectors &s);
    
    bool empty_check() const;
    int getsize() const;
    void clearstack();
    void show() const;
    int & top();
    void pop();
    void push(int number);
};

#endif /* Stack_Vectors_hpp */

函数定义文件源码如下:

//
//  Stack_Vectors.cpp
//  堆栈(vector)
//
//  Created by lq on 2019/9/9.
//  Copyright © 2019 Mr.liang. All rights reserved.
//

#include "Stack_Vectors.hpp"
#include <iostream>
#include <vector>
using namespace std;

stack_vectors::~stack_vectors()
{
    std::cout<<"Bye~"<<std::endl;
}

stack_vectors::stack_vectors()
{
    stack_size = 0;
}

stack_vectors::stack_vectors(const stack_vectors &s)
{
    stack_size = 0;
    for(int i = 0;i<s.stack_size;i++)
    {
        array.push_back(s.array[i]);
        stack_size++;
    }
}

bool stack_vectors::empty_check()const
{
    return array.empty();
}

int stack_vectors::getsize() const
{
    return stack_size;
}

void stack_vectors::show() const
{
    for(int i = 0;i<stack_size;i++)
    {
        std::cout<<array[stack_size-i-1]<<" ";
    }
    std::cout<<std::endl;
}

void stack_vectors::clearstack()
{
    array.clear();
}

int & stack_vectors::top()
{
    return array.back();
}

void stack_vectors::pop()
{
    array.pop_back();
    stack_size--;
}

void stack_vectors::push(int number)
{
    array.push_back(number);
    stack_size++;
}

stack_vectors copynumbers(stack_vectors target, stack_vectors & sv)
{
    int t;
    vector<int> temple;
    for(int i = 0;i<sv.getsize();i++)
    {
        t = sv.top();
        sv.pop();
    }
    sv = target;
    return target;
}

测试文件如下:

//
//  main.cpp
//  堆栈(vector)
//
//  Created by lq on 2019/9/9.
//  Copyright © 2019 Mr.liang. All rights reserved.
//

#include <iostream>
#include "Stack_Vectors.hpp"
using namespace std;

int main(int argc, const char * argv[]) {
    // insert code here...
    stack_vectors _st,_target;
    _st.push(1);
    _st.push(2);
    _st.push(3);
    _st.push(4);
    _st.push(5);
    _st.push(6);
    
    _st.show();
    _st.pop();
    _st.show();
    
    cout<<_st.getsize()<<endl;
    cout<<_st.top()<<endl;
    
}

运行结果如下:

6 5 4 3 2 1 
5 4 3 2 1 
5
5
Bye~
Bye~
Program ended with exit code: 0
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!