链式队列
//
// 链式队列
// TestList
//
// Created by chenshang on 14-2-7.
// Copyright (c) 2014年 chenshang. All rights reserved.
//
#ifndef TestList_LinkQueue_h
#define TestList_LinkQueue_h
#include <iostream>
using namespace std;
typedef int T;
class QueueNode{
public:
QueueNode(const T item):data(item),next(NULL){}
T data;
QueueNode* next;
};
class LinkQueue{
public:
LinkQueue():front(NULL),rear(NULL){}
~LinkQueue(){
Empty();
}
public:
void append(const T item);
T Delete(); //删除队列头元素
T getFront();
void Empty();
void print();
bool isEmpty()const{
return front==NULL;
}
private:
QueueNode* front;
QueueNode* rear;
};
void LinkQueue::Empty(){
QueueNode* pdel;
while (front) {
pdel=front;
front=front->next;
delete pdel;
}
}
void LinkQueue::append(const T item){
if (front==NULL) {
front=rear = new QueueNode(item);
}else{
rear->next= new QueueNode(item);
rear=rear->next;
}
}
T LinkQueue::Delete(){
if (isEmpty()) {
cout<<"There is no element!"<<endl;
exit(1);
}
QueueNode* pdel = front;
T temp = front->data;
front=front->next;
delete pdel;
return temp;
}
T LinkQueue::getFront(){
if (isEmpty()) {
cout<<"There is no element!"<<endl;
exit(1);
}
return front->data;
}
void LinkQueue::print(){
QueueNode* pmove = front;
cout<<"front";
while (pmove) {
cout<<"-->"<<pmove->data;
pmove=pmove->next;
}
cout<<"->rear"<<endl<<endl<<endl;
}
#endif