跟着老师做了一遍,效果很不错,成功了!!
image.pngimage.png
image.png
源代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "Stack.h"
using namespace std;
int main()
{
Stack s1(2);
s1.push('a');
s1.push('b');
cout << s1.isFull() << endl;
cout << s1.getTop() << endl;
cout << s1.pop() << endl;
cout << s1.pop() << endl;
cout << s1.isEmpty() ;
return 0;
}
Stack.h文件如下:
//#pragma once
const int MAX_SIZE = 100;
class Stack
{
public:
Stack();
Stack(int s);
~Stack();
void push(char ch);
char pop();
char getTop();
bool isEmpty();
bool isFull();
void setNull();
private:
char *data;
int size;
int top;
};
Stack.cpp如下
#include "Stack.h"
Stack::Stack()
{
size = MAX_SIZE;
top = -1;
data = new char[MAX_SIZE];
}
Stack::~Stack()
{
delete[] data;
}
Stack::Stack(int s)
{
size = s;
top = -1;
data = new char[size];
}
void Stack::push(char ch)
{
if (!isFull())
{
data[++top] = ch; //将传入的ch值,传入数组data,但是传入之前,先将top自增1。很重要,这个细节
}
/*else
{
cout << "栈空间满了"; 养成良好的编写风格,子程序不要有输出语句,就是单纯的一个小功能而已即可
}*/
}
char Stack::pop()
{
if (!isEmpty())
{
return data[top--]; //将top的值,立返返回出去,然后在top自减一。很重要,这个细节
}
}
char Stack::getTop()
{
if (!isEmpty())
{
return data[top];
}
}
bool Stack::isEmpty()
{
if (top==-1)
{
return true;
}
else
{
return false;
}
}
bool Stack::isFull()
{
if (top+1==size)
{
return true;
}
else
{
return false;
}
}
void Stack::setNull()
{
top = -1;
}
网友评论