国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

數組實現棧功能(C++練習記錄)

2019-11-06 08:28:55
字體:
來源:轉載
供稿:網友

Q:通過 數組 實現 棧 功能

A:

MyStack.h

#ifndef MYSTACK_H#define MYSTACK_H/******************************//*棧實現 2017.03.02 by hyc*****//******************************/class MyStack{public:	MyStack(int size);    //初始化棧空間	~MyStack();//回收棧空間內存	void clearStack();//清空棧	bool stackEmpty();//判空棧,若空返回true	bool stackFull();//判滿棧,若滿返回true	int stackLength();//棧中元素個數	bool push(char elem);//元素入棧,棧頂上升	bool pop(char &elem);//元素出棧,棧頂下降	void stackTraverse(bool isFromBottom);//遍歷棧中元素 isFromBottom=1,從棧底遍歷PRivate:	char *m_pBuffer;//棧空間指針	int m_isize;//棧容量	int m_itop;//棧頂,也是棧中元素個數};#endif // !MYSTACK_H

MyStack.cpp

#include "MyStack.h"#include <iostream>using namespace std;MyStack::MyStack(int size){	m_isize = size;	m_pBuffer = new char[size];	m_itop = 0;}MyStack::~MyStack(){	delete[] m_pBuffer;}void MyStack::clearStack(){	m_itop = 0;}bool MyStack::stackEmpty(){	return 0 == m_itop ? true : false;}bool MyStack::stackFull(){	return m_isize == m_itop ? true : false;}int MyStack::stackLength(){	return m_itop;}bool MyStack::push(char elem){	if (stackFull())	{		return false;	}	m_pBuffer[m_itop] = elem;	m_itop++;	return true;}bool MyStack::pop(char &elem){	if (stackEmpty())	{		return false;	}	m_itop--;	elem = m_pBuffer[m_itop];	return true;}void MyStack::stackTraverse(bool isFromBottom){	if (isFromBottom)	{		for (int i = 0; i < m_itop; i++)		{			cout << m_pBuffer[i] << ",";		}	}	else	{		for (int i = m_itop-1; i >= 0; i--)		{			cout << m_pBuffer[i] << ",";		}	}}demo.cpp:用于測試棧功能實現情況

#include "MyStack.h"#include <iostream>using namespace std;/******************************//*棧實現 2017.03.02 by hyc*****//******************************/int main(void){	MyStack *pStack = new MyStack(5);		pStack->push('h');//棧底	pStack->push('e');	pStack->push('l');	pStack->push('l');	pStack->push('o');//棧頂	if (pStack->stackFull()){		cout << "棧滿" << endl;	}	pStack->stackTraverse(true);	cout << endl;	char ch;	pStack->pop(ch);	cout << ch << endl;	if (pStack->stackEmpty()){		cout << "棧空" << endl;	}	if (pStack->stackFull()){		cout << "棧滿" << endl;	}	pStack->stackTraverse(false);	cout << pStack->stackLength() << endl;	pStack->clearStack();	if (pStack->stackEmpty()){		cout << "棧空" << endl;	}	delete pStack;	pStack = NULL;	system("pause");	return 0;}輸出結果:

注意:本次練習只實現了簡單的int類型的棧功能,可以使用模板類進一步實現其多類型支持。并且本程序有很多不完善的地方,如分配空間等的異常檢測。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 古蔺县| 丰都县| 商南县| 屏东市| 乌拉特后旗| 宜章县| 日喀则市| 司法| 洪湖市| 兴和县| 资溪县| 阿坝县| 永寿县| 临漳县| 潞城市| 万全县| 印江| 彰化县| 阿合奇县| 工布江达县| 晴隆县| 济源市| 大同市| 绥滨县| 长顺县| 瑞丽市| 正镶白旗| 高清| 琼结县| 陇川县| 延寿县| 启东市| 石门县| 苍梧县| 紫金县| 深水埗区| 公主岭市| 塔城市| 灯塔市| 论坛| 佛坪县|