链队列之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;
}
链队列之C++实现的更多相关文章
- javascript实现数据结构与算法系列:队列 -- 链队列和循环队列实现及示例
1 队列的基本概念 队列(Queue):也是运算受限的线性表.是一种先进先出(First In First Out ,简称FIFO)的线性表.只允许在表的一端进行插入,而在另一端进行删除. 队首(fr ...
- java与数据结构(8)---java实现链队列
链队列 实际上就是单链表,只是规定了删除在队头进行,添加在队尾进行. 链队列代码结构 package list.queue; public interface Queuable<T>; p ...
- C语言实现链队列的初始化&进队&出队
/*链表实现队列的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typed ...
- c/c++链队列
链队列 链队列就是简化了的单链表 nodequeue.h #ifndef __NODEQUEUE__ #define __NODEQUEUE__ #include <stdio.h> #i ...
- 【Java】 大话数据结构(7) 循环队列和链队列
本文根据<大话数据结构>一书,实现了Java版的循环队列.链队列. 队列:只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 1.循环队列 队列的顺序储存结构:用数组存储队列,引入 ...
- 队列的理解和实现(二) ----- 链队列(java实现)
什么是链队列 链队是指采用链式存储结构实现的队列,通常链队用单链表俩表示.一个链队显然需要两个分别指示队头和队尾的指针,也称为头指针和尾指针,有了这两个指针才能唯一的确定. package 链队列; ...
- C语言——循环队列和链队列的基本运算
// 循环队列#include <stdio.h> #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20 ...
- C语言链队列
链队列类似于单链表,为了限制只能从两端操作数据,其结构体内有2个指针分别指向头尾,但队列里的节点用另一种结构体来表示,头尾指针则为指向该结构体的类型.只能通过操作头尾指针来操作队列. typedef ...
- java实现链队列
java实现链队列的类代码: package linkqueue; public class LinkQueue { class Element { Object elem; Element next ...
随机推荐
- Nutch
nutch 插件开发[资料整理]:http://my.oschina.net/cloudcoder/blog/472915 Nutch2.3+Mongodb+ElasticSearch:http:// ...
- HTML5的绘图的支持
一.简单介绍canvas元素 <canvas.../>是HTML5新增的一个元素,该元素用于绘制图形.实际上<canvas../>只是相当于一张画布. 它除了可以指定通用属性外 ...
- win7(32 bit) + IE8 环境,IE8无法弹窗(错误提示:“此网页上的错误可能会使它无法正确运行”),有关的系统注册信息损坏——解决方法
错误截图如下: IE有关的系统注册信息损坏,导致IE无法正常弹窗. 解决办法:重新注册与IE有关的DLL文件,具体如下: 1.以管理员身份运行附件脚本(新建txt文件,将下面代码复制到txt文 ...
- ASP.NET MVC View向Controller传值方式总结
1:QueryString传值1)也可以使用new{}来为form的action增加querystring2)在controler里使用Request.QueryString["word&q ...
- JavaScript中的构造函数
目录: constructor & prototype 为构造函数添加属性和方法的多种不同方法 组合使用this和prototype关键字创建构造函数(常用方法) 用对象直接量作为构造函数的参 ...
- 解决android TextView多行文本(超过3行)使用ellipsize属性无效问题
布局文件中的TextView属性 <TextView android:id="@+id/businesscardsingle_content_abstract" androi ...
- 如何使用 Android Studio 的 git hub 功能
How to use GitHub with Android Studio This article will explain how to use GitHub with Android Studi ...
- 【高级】C++中虚函数机制的实现原理
多态是C++中的一个重要特性,而虚函数却是实现多态的基石.所谓多态,就是基类的引用或者指针可以根据其实际指向的子类类型而表现出不同的功能.这篇文章讨论这种功能的实现原理,注意这里并不以某个具体的编译器 ...
- HDU 4622 Reincarnation(后缀自动机)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4622 [题目大意] 给出一个长度不超过2000的字符串,有不超过10000个询问,问[L,R]子串 ...
- Android应用开发基础篇(1)-----Button
Android应用开发基础篇(1)-----Button 一.概述 Button,顾名思义就是按钮的意思,它主要的功能是响应用户按下按钮时的动作. 二.应用 新建一个工程, ...