链队列之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;
}
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值