程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> [數據結構]用C++編寫隊列及基本操作(包括插入,出隊列,摧毀,清空等等)

[數據結構]用C++編寫隊列及基本操作(包括插入,出隊列,摧毀,清空等等)

編輯:關於C++
//【數據結構】用C++編寫隊列及基本操作(包括插入,出隊列,摧毀,清空等等)

//頭文件

#ifndef _SEQ_STACK_
#define _SEQ_STACK_


#include 
using namespace std;


template 
class Queue
{
public:
	Queue(size_t sz = INIT_SIZE)
	{
		capacity = sz > INIT_SIZE ? sz : INIT_SIZE;
		base = new Type[capacity];
		front = back = 0;
	}
	~Queue()
	{
		destory();
	}
public:


	bool empty() const     //判斷是否為空
	{
		return(front==back);
	}


	bool full()const       //判斷是否已滿
	{
		return((back+1)%capacity==front);
	}


public:


	void push(const Type &x)             //進隊列
	{
		if (full())
		{
			cout << "隊列已滿,不能插入。" << endl;
			return;
		}
		base[back] = x;
		back = (back + 1) % capacity;
	}




	void pop()                          //出隊列
	{
		if (empty())
		{
			cout << "隊列為空" << endl;
			return;
		}
		front=(front+1)%capacity;
	}




	bool getFront(Type &x) const             //獲得隊列頭部
	{
		if (empty())
		{
			cout << "隊列為空" << endl;
			return false;
		}
		else
		{
			x = base[front];
			return true;
		}
	}




	int length() const                  //求大小
	{
		return back-front;
	}




	void clear()                       //清除
	{
		front=back=0;
	}




	void destory()                     //摧毀
	{
		delete[]base;
		base = NULL;
		capacity = front = back = 0;
	}




	void show() const                  //顯示
	{
		if (empty())
		{
			cout << "隊列為空" << endl;
			return;
		}
		for (int i = front; i != back; i = (i + 1) % capacity)
		{
			cout << base[i] << endl;
		}
	}


	void quit_system(int &x)
	{
		x = 0;
	}




private:
	enum { INIT_SIZE = 8 };
	Type *base;
	int capacity;
	int front;
	int back;
};




#endif


//主函數

#include "Queue.h"


void main()
{
	Queue myqueue;
	int select = 1;
	int Item;
	while (select)
	{
		cout << "***************************************" << endl;
		cout << "* [1] show            [2] push        *" << endl;
		cout << "* [3] pop             [4] length      *" << endl;
		cout << "* [5] clear           [6] destory     *" << endl;
		cout << "* [7] getFront        [8] quit_system *" << endl;
		cout << "***************************************" << endl;
		cout << "請選擇:>";
		cin >> select;
		switch (select)
		{
		case 1:
			myqueue.show();
			break;
		case 2:
			cout << "請輸入要插入的值(-1結束):>";
			while (cin >> Item, Item != -1)
			{
				myqueue.push(Item);
			}
			break;
		case 3:
			myqueue.pop();
			break;
		case 4:
			cout << "大小為:" << myqueue.length() << endl;
			break;
		case 5:
			myqueue.clear();
			break;
		case 6:
			myqueue.destory();
			break;
		case 7:
			if (myqueue.getFront(Item))
				cout << "頭元素為:"<
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved