本文使用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
来源:https://blog.csdn.net/weixin_45520588/article/details/100674192