链队列

#include<iostream>
using namespace std;
template <class DataType>
struct Node{
	DataType data;
	Node<DataType> *next;
};
template <class DataType>
class LinkedQueue
{
private:
	Node<DataType> *front,*rear;//对头和队尾指针
public:
	LinkedQueue();
	~LinkedQueue();
	void enQueue(float x);
	DataType deQueue();
	DataType getQueue();
	bool isEmpty();
};

template <class DataType>
LinkedQueue<DataType>::LinkedQueue()
{
	Node<DataType> *s=NULL;
	s=new Node<DataType>;
	s->next=NULL;
	front=rear=s;
}
template <class DataType>
LinkedQueue<DataType>::~LinkedQueue(){
	Node<DataType> *p=NULL;
	while(front!=NULL){
		p=front;
		front=p->next;
		delete p;
	}
}
template <class DataType>
void LinkedQueue<DataType>::enQueue(float x) 
{  
	Node<DataType> *s=new Node<DataType>;
	s->data=x;
	s->next=NULL;
	rear->next=s;
	rear=s;
}
template <class DataType>
DataType LinkedQueue<DataType>::deQueue()
{  
	Node<DataType> *p=NULL;
	int x;
	if(rear==front) throw"队空!\n";
	p=front->next;
	front->next=p->next;//将队头元素所在节点摘链
	x=p->data;//暂存队头元素
	if(p->next==NULL) rear=front;//判断出队前队列长度是否为1
	delete p;
	return x;
}
template <class DataType>
DataType LinkedQueue<DataType>::getQueue()
{
	if(front==rear) throw"队空!\n";
	return front->next->data;
}
template <class DataType>
bool LinkedQueue<DataType>::isEmpty()
{
	if(front==rear) return true;
	else return false;
}

int main() {
    LinkedQueue<int> s = LinkedQueue<int>();
    cout << "isEmpty : " << s.isEmpty() << endl;
        s.enQueue(86);
		s.enQueue(99);s.enQueue(67);
		s.enQueue(95);s.enQueue(88);
        s.enQueue(78);s.enQueue(83); 
	    s.enQueue(69);
    cout << "判断此时表是否为空: " << s.isEmpty() << endl;
    cout << "获取栈顶元素: " <<s.getQueue() << endl;
    cout << "出栈: " << s.deQueue() << endl;
    cout << "出栈:" << s.deQueue() << endl;
	
    cout << "获取此时的栈顶: " <<s.getQueue() << endl;
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值