[ create a new paste ] login | about

Link: http://codepad.org/bI70M2Vi    [ raw code | output | fork ]

C++, pasted on Feb 19:
/*
請定義一個類別,用來表現整數的push-down堆疊。堆疊是一串項目,只允許
從一端加入資料(pushing)或移出資料(popping),也就是支援後進先出
(last-in, first-out)的機制。此類別應有push()和pop()兩個函式,再加上
檢查堆疊內容的print()函式和想看堆疊最頂端資料又不想將它移出的peek()
函式。撰寫一個測試程式來檢驗類別是否能正確的運作。
*/

#include <iostream>

using std::cout;
using std::endl;
using std::cin;

class CHeap
{
	public:
		static int setting;	//指位置用
		
		CHeap(int insert = 0)   //讓輸入的數字能在類別裡運作,insert是輸入的數字
		{
			value = insert;
		}
		
		void push()          //把輸入的數字丟到陣列最後面
		{
			heap[setting] = value;
			setting++;		//把輸入值填入陣列後,準備填下一個位置
		}

		void pop()			//把陣列最後面的數字砍掉
		{
			setting--;		//直接往前移
		}

		void peek()			//印出陣列最後面的數字
		{
			int x = setting - 1;	//因為setting會比真實的陣列尾多1,所以要扣回去
			cout << heap[x] << endl;
		}

		void print()		//由後往前印出陣列的所有數字
		{
			for(int i = (setting - 1); i >= 0; i--)
			{
				cout << heap[i] << "  ";
			}
		}
	private:
		int heap[80];		//準備存放資料的陣列
		int value;		//要加進去的數字
};

int CHeap::setting = 0;

int main(void)
{
	cout << "請選擇以下項目:" << endl
		 << "1.從最前面輸入數字  " << "2.砍掉最前面的數字  " << "3.看最前面的數字  " << "4.印出所有數字  " << "5.結束" << endl;

	int select;	//選項
	cin >> select;
	cout << endl;

	while(select == 1 || select == 2 || select == 3 || select == 4 || select == 5)
	{
		switch(select)
		{
			case 1:
				{
					cout << "請輸入數字:";
					int input;
					cin >> input;
					cout << endl;
					CHeap insert(input);	//有問題的地方
					insert.push();

					break;
				}
			case 2:
				{
					CHeap remove(0);	//有問題的地方
					remove.pop();
					cout << endl;

					break;
				}
			case 3:
				{
					CHeap lookfront(0);	//有問題的地方
					lookfront.peek();
					cout << endl;

					break;
				}
			case 4:
				{
					CHeap showall(0);	//有問題的地方
					showall.print();
					cout << endl;

					break;
				}
			default:
				break;
		}
		if(select == 5)
			break;

		cout << "請選擇以下項目:" << endl
			 << "1.從最前面輸入數字  " << "2.砍掉最前面的數字  " << "3.看最前面的數字  " << "4.印出所有數字  " << "5.結束" << endl;
		cin >> select;
		cout << endl;
	}

	return 0;
}


Output:
1
2
3
請選擇以下項目:
1.從最前面輸入數字  2.砍掉最前面的數字  3.看最前面的數字  4.印出所有數字  5.結束



Create a new paste based on this one


Comments: