写这段代码就感觉舒服很多,很快完成,可能本身就比较简单吧。
使用了一个模板类来实现栈的顺序存储结构的实例化,代码及函数功能如下:
template<typename T>
class sqStack
{
private:
T data[MAXSIZE];
int top; //top指向栈的栈顶元素而不是栈顶的下一个元素
public:
sqStack(); //默认构造函数
T GetTop() const; //获得栈顶元素,并返回
bool Push(const T &e); //将新元素压入栈
bool Pop(); //弹出栈顶元素
bool isEmpty() const; //判断栈是否为空
bool isFull() const; //判断栈是否满
void ClearStack(); //清空栈
};
栈的顺序存储结构头文件
#pragma once
#ifndef STACK_H_
#define STACK_H_
#define MAXSIZE 1000
template<typename T>
class sqStack
{
private:
T data[MAXSIZE];
int top;
public:
sqStack();
T GetTop() const;
bool Push(const T &e);
bool Pop();
bool isEmpty() const;
bool isFull() const;
void ClearStack();
};
template<typename T>
sqStack<T>::sqStack()
{
top = -1;
}
template<typename T>
T sqStack<T>::GetTop() const
{
if (isEmpty()) {
cout << "The stack is empty!\n";
exit(EXIT_FAILURE);
}
else
return data[top];
}
template<typename T>
bool sqStack<T>::Push(const T &e)
{
if (isFull())
return false;
else {
top += 1;
data[top] = e;
}
}
template<typename T>
bool sqStack<T>::Pop()
{
if (isEmpty())
return false;
else {
top -= 1;
}
return true;
}
template<typename T>
bool sqStack<T>::isEmpty() const
{
return (top == -1);
}
template<typename T>
bool sqStack<T>::isFull() const
{
return (top == MAXSIZE - 1);
}
template<typename T>
void sqStack<T>::ClearStack()
{
top = -1;
}
#endif
栈的顺序存储结构使用示例
#include<iostream>
#include<string>
#include"stack.h"
using namespace std;
void main()
{
sqStack<string> book;
book.Push("BOOK THIEF");
book.Push("KITE RUNNER");
book.Push("THE OLD MAN");
cout << book.GetTop() << endl;
book.Pop();
cout << book.GetTop() << endl;
book.ClearStack();
cout << book.GetTop() << endl;
}