经过深思熟虑,小周我想去打ACM,大学生国际程序设计比赛,可是奈何个人实力实在不行,算法这一块实在薄弱,我就想从零开始学习算法,如果有同学想一起学习的可以点下关注,让我们一起去学习。
今天我学到的内容是
数据结构--->栈
原理:
栈:又名堆栈,是一种运算受限制的线性表,限制是:仅仅允许从表的一段插入和删除运算。这一段称为栈顶,把另一端称为栈底。向一个栈插入新元素又称为进栈、入栈和压栈。它是把新元素放到栈顶元素上面,使之称为新的栈顶元素;从一个栈删除元素又称作出栈或者退栈,它是将栈顶元素删除,使其相邻的元素称为新的栈顶元素。
代码:
#include <iostream>
using namespace std;
class SqStack { //创建栈的类
private :
enum {MaxSize=100};
int data[MaxSize];
int top;
public:
SqStack();
~SqStack();
bool isEmpty();
void pushInt(int x);
int popInt();
int getTop();
void display();
};
SqStack::SqStack() {
top = -1;
}
SqStack::~SqStack() {} //析构函数
bool SqStack::isEmpty() { //判断该栈是不是为空
return (top == -1);
}
void SqStack::pushInt(int x){
if (top == MaxSize - 1) {
cout << "栈上溢出" << endl;
}
else {
top++;
data[top] = x;
}
}
int SqStack::popInt() {//退栈
int tmp = 0;
if (top == -1) {
cout << "栈已空" << endl;
}
else {
tmp = data[top--];
}
return tmp;
}
int SqStack::getTop() {
int tmp = 0;
if (top == -1)
{
cout << "栈空" << endl;
}
else
{
tmp = data[top];
}
return tmp;
}
void SqStack::display() { //打印栈顶元素
cout << "栈中元素" << endl;
for (int index = top; index >= 0; index--) {
cout << data[index];
}
}
int main() {
SqStack st;
cout << "栈空 " << st.isEmpty() << endl;
for (int i = 1; i < 10; i++) { //入栈 1 - 10
st.pushInt(i);
}
st.popInt();
cout << "退一次栈" << endl;
cout << "栈顶元素" << st.getTop() << endl;
st.popInt();
st.display(); //打印所有元素
return 0;
}
需要输入的话就是将循环输入的地方换成你需要输入的值
-----------------------------
插一下广告啊,有需要的可以联系,绝对真实可靠