国产探花免费观看_亚洲丰满少妇自慰呻吟_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類型的棧功能,可以使用模板類進一步實現其多類型支持。并且本程序有很多不完善的地方,如分配空間等的異常檢測。


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

圖片精選

主站蜘蛛池模板: 咸阳市| 墨脱县| 宁河县| 濮阳市| 开化县| 类乌齐县| 多伦县| 洪洞县| 苍南县| 桑植县| 信丰县| 东阳市| 积石山| 云南省| 方山县| 商丘市| 湟源县| 邵东县| 阜新市| 台前县| 浦北县| 平山县| 会东县| 西乡县| 咸阳市| 邓州市| 大石桥市| 会理县| 大埔区| 巧家县| 余江县| 垣曲县| 上思县| 翁源县| 泾源县| 双辽市| 尼玛县| 弥渡县| 津市市| 包头市| 博罗县|