首页 > 程序开发 > 软件开发 > Java >

队列的实现:链式队列

2014-06-10

队列常常也使用链式存储的方式来实现。为了方便操作,同顺序存储一样,我们要维护一个头指针和一个尾指针。如下图: 在链式队列中显然不会出现假溢出的情况。但在出队时,要及时释放内存。由于在队列的

队列常常也使用链式存储的方式来实现。为了方便操作,同顺序存储一样,我们要维护一个头指针和一个尾指针。如下图:

\

在链式队列中显然不会出现假溢出的情况。但在出队时,要及时释放内存。由于在队列的实现:顺序队列中,对队列的描述已经很清楚了。就闲话不多说,直接上代码:

类定义和类实馅喎"https://www.2cto.com/kf/yidong/wp/" target="_blank" class="keylink">WPC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">#include #include using namespace std; typedef int ELemType; class QNode //节点类型 { public: ELemType data; QNode *next; QNode(ELemType v, QNode*p=NULL):data(v),next(p){}; }; class LinkQueue //链式队列 { private: int size; QNode *front; //头指针 QNode *rear; //尾指针 public: LinkQueue(); //默认构造方法 ~LinkQueue(); //析构 int getSize(); //链表大小 bool getFront(ELemType&); //获取头节点 bool getRear(ELemType&); //获取尾节点 bool empty(); //队列是否为空 void clear(); //清空链表 void enQueue(ELemType); //入队 void deQueue(); //出队 void queueTraverse(); //队列遍历 }; //类实现 LinkQueue::LinkQueue() { front=rear=NULL; size=0; } LinkQueue::~LinkQueue() { clear(); } int LinkQueue::getSize() { return size; } bool LinkQueue::getFront(ELemType &item) { if(front) { item=front->data; return true; } cout<<"空队列!"<data; return true; } cout<<"空队列!"<next; delete p; p=q; } } rear=NULL; //这一句,不能忘了 size=0; } void LinkQueue::enQueue(ELemType data) { if(front) { rear->next=new QNode(data,NULL); rear=rear->next; } else { front=rear=new QNode(data,NULL); } size++; } void LinkQueue::deQueue() { if(front) { QNode* p=front; front=front->next; delete p; size--; } } void LinkQueue::queueTraverse() { if(front) { QNode *p=front; while(p) { cout<data; p=p->next; } cout<主函数

int main()
{
	cout<<"链式队列演示"<>item && item)
		queue.enQueue(item);
	cout<<"遍历"<运行:



完整代码下载:队列的实现:链式队列





相关文章
最新文章
热点推荐