链队列之C++实现
链队列时建立在单链表的基础之上的。由于是动态分配节点内存,所以无需判满。
链队列的形式如下:
1、队列空

2、队列存在数据

下面介绍下C++实现的链队列,VC6下调试通过。
1、文件组织

2、lq.h链队列类的说明
#ifndef _LQ_H_#define _LQ_H_typedef int dataType;struct node //队列节点{dataType data; //数据域node *next; //指针域};class lq{public:lq(); //构造函数~lq(); //析构函数void push(dataType var); //入队void pop(); //出队dataType front(); //取对头元素,对头不变化bool isEmpty(); //判空.head=tail=NULL时队列为空private:node *head; //对头指针node *tail; //队尾指针};#endif
3、lq.cpp链队列的定义
#include <iostream>#include "lq.h"using namespace std;lq::lq(){head = NULL; //head=tail=NULL时队列为空tail = NULL;}lq::~lq(){node *ptr = NULL;while(head != NULL){ptr = head->next;delete head;head = ptr;}}void lq::push(dataType var){node *ptr = new node;ptr->data = var;ptr->next = NULL;if(tail != NULL) {tail->next = ptr; //不是入队的第一个节点}else{head = ptr;//如果是入队的第一个节点}tail = ptr;}void lq::pop(){node *ptr = head->next;delete head;head = ptr;if(head == NULL) //head时要将tail也赋为NULL{tail = NULL;}}dataType lq::front(){return head->data;}bool lq::isEmpty(){return head == NULL && tail == NULL;}
4、main.cpp
#include <iostream>#include "lq.h"using namespace std;int main(){lq exp;int i =0;for(i=0;i<100;i++){exp.push(i);}for(i=0;i<200;i++){if(!exp.isEmpty()){cout<<exp.front()<<endl;exp.pop();}}if(exp.isEmpty()){cout<<"队列为空!"<<endl;}return 0;}