主函式:
#include "Mystack.h"
int main() {
Mystack mystack(3);
mystack.push('a');
mystack.push('b');
mystack.push('a');
mystack.stackTraverse();
return 0;
}
Mystack.h檔案:#pragma once
class Mystack {
public:
Mystack(int size); //分配記憶體初始化堆疊空間,設定堆疊容量,堆疊頂
~Mystack(); //回收堆疊空間記憶體
bool stackEmpty(); //判定堆疊是否為空,空->true,非空->false
bool stackFull(); //判斷堆疊是否為滿,滿->true,非滿->false
void clearStack(); //清空堆疊
int stackLength(); //已有元素個數
void push(char elem); //元素入堆疊,堆疊頂上升
void pop(char &elem); //元素出堆疊,堆疊頂下降
void stackTraverse(); //遍歷堆疊元素
private:
char * m_pBuffer; //堆疊空間指標
int m_iSize; //堆疊容量
int m_iTop; //堆疊頂
};
Mystack.cpp檔案:
#include "Mystack.h"
#include <iostream>
using namespace std;
Mystack::Mystack(int size) {
m_iSize = size;
m_iTop = 0;
m_pBuffer = new char(size); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
Mystack::~Mystack() {
cout << "~Mystack()" << endl;
delete []m_pBuffer;
m_pBuffer = NULL;
}
bool Mystack::stackEmpty() {
if (0 == m_iTop) {
return true;
cout << "出錯啦!空間里沒有東西清理哦!" << endl;
}
return false;
}
bool Mystack::stackFull() {
if (m_iSize == m_iTop) {
return true;
cout << "空間滿了,請清理記憶體!" << endl;
}
return false;
}
void Mystack::clearStack() {
m_iTop = 0;
}
int Mystack::stackLength() {
return m_iTop;
}
void Mystack::push(char elem) {
if (!stackFull()) {
m_pBuffer[m_iTop] = elem;
m_iTop++;
}
}
void Mystack::pop(char& elem) {
if (!stackEmpty()) {
m_iTop--;
elem = m_pBuffer[m_iTop];
}
}
void Mystack::stackTraverse() {
for (int i = 0;i < m_iTop;i++) {
cout << "堆疊中元素有:";
cout << m_pBuffer[i] << endl;
}
}
uj5u.com熱心網友回復:
new char(size)應改成new char[size]轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/37788.html
標籤:C++ 語言
上一篇:新手求大神解釋
下一篇:輸入一個字串
