读书人

链行列之C++实现

发布时间: 2013-10-08 16:38:32 作者: rapoo

链队列之C++实现

链队列时建立在单链表的基础之上的。由于是动态分配节点内存,所以无需判满。

链队列的形式如下:

1、队列空

链行列之C++实现

2、队列存在数据

链行列之C++实现

下面介绍下C++实现的链队列,VC6下调试通过。

1、文件组织

链行列之C++实现

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;}

读书人网 >C++

热点推荐