/***
time : 2016 11 29
author: yb
title: queue(lian biao)
***/
#ifndef QUEUE_H
#define QUEUE_H
template
class Node
{
public:
Node();
Node(T item);
T val;
Node
* next;
};
template
class Cqueue
{
public:
Cqueue();//构造函数
void enqueue(T item);//入队(先进先出)
T dequeue();//出对
bool isEmpty();//是否为空
int size();//包含的元素个数
//private:
int qsize;
Node
* head;
Node
* tail; }; #endif
/***
time : 2016 11 29
author: yb
title: queue(lian biao)
***/
#include "queue.h"
#include
template
Node
::Node(T item):val(item),next(NULL)
{
}
template
Cqueue
::Cqueue():qsize(0),head(NULL),tail(NULL) { } template
bool Cqueue
::isEmpty() { return (qsize == 0); } /* 函数名:void enqueue(T) 参数:T item 输入的元素 功能:入队 返回:void */ template
void Cqueue
::enqueue(T item) { if (isEmpty()) { Node
*t_node = new Node
(item); head = t_node; tail = t_node; qsize++; std::cout<<"first the item is:"<
<
* t_node = new Node
(item); tail->next = t_node; tail = tail->next; qsize++; std::cout<<"the item is:"<
<
T Cqueue
::dequeue() { if (isEmpty()) { std::cout<<"the queue is empty!"<
val; Node
* t_node = head; head = head->next; delete t_node; t_node = NULL; qsize--; return item; } else if( head == tail ) { T item = head->val; delete head; head = NULL; qsize--; return item; } return NULL; } template
int Cqueue
::size() { return qsize; } void main() { Cqueue
myQueue; for (int i = 0 ;i<10;i++) { myQueue.enqueue(i); } while (!myQueue.isEmpty()) { std::cout<
<<" "; } }
head 和tail重复删除,导致内存错误,我没有注意head和tail指向同一片内存,所以删除了两遍;