懒猫老师-数据结构-(2)堆栈作业1:实现顺序栈--搞定

2020-11-26  本文已影响0人  heiqimingren

跟着老师做了一遍,效果很不错,成功了!!

image.png
image.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;
}
上一篇下一篇

猜你喜欢

热点阅读