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

链队列的形式如下:

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++实现的更多相关文章

  1. javascript实现数据结构与算法系列:队列 -- 链队列和循环队列实现及示例

    1 队列的基本概念 队列(Queue):也是运算受限的线性表.是一种先进先出(First In First Out ,简称FIFO)的线性表.只允许在表的一端进行插入,而在另一端进行删除. 队首(fr ...

  2. java与数据结构(8)---java实现链队列

    链队列 实际上就是单链表,只是规定了删除在队头进行,添加在队尾进行. 链队列代码结构 package list.queue; public interface Queuable<T>; p ...

  3. C语言实现链队列的初始化&进队&出队

    /*链表实现队列的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typed ...

  4. c/c++链队列

    链队列 链队列就是简化了的单链表 nodequeue.h #ifndef __NODEQUEUE__ #define __NODEQUEUE__ #include <stdio.h> #i ...

  5. 【Java】 大话数据结构(7) 循环队列和链队列

    本文根据<大话数据结构>一书,实现了Java版的循环队列.链队列. 队列:只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 1.循环队列 队列的顺序储存结构:用数组存储队列,引入 ...

  6. 队列的理解和实现(二) ----- 链队列(java实现)

    什么是链队列 链队是指采用链式存储结构实现的队列,通常链队用单链表俩表示.一个链队显然需要两个分别指示队头和队尾的指针,也称为头指针和尾指针,有了这两个指针才能唯一的确定. package 链队列; ...

  7. C语言——循环队列和链队列的基本运算

    // 循环队列#include <stdio.h> #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20 ...

  8. C语言链队列

    链队列类似于单链表,为了限制只能从两端操作数据,其结构体内有2个指针分别指向头尾,但队列里的节点用另一种结构体来表示,头尾指针则为指向该结构体的类型.只能通过操作头尾指针来操作队列. typedef ...

  9. java实现链队列

    java实现链队列的类代码: package linkqueue; public class LinkQueue { class Element { Object elem; Element next ...

随机推荐

  1. C++中#include的工作原理

    大多数人可能对“#include”比较熟悉,因为我们写C/C++程序的时候都会写的字符串之一,但是它是具体怎么工作的?或者它的原理是什么呢? 可能不太熟悉,也有可能没有去关心过.我们只关心程序能否正确 ...

  2. C++数据类型简析

    C++语言的基本数据类型有如下四种: 整型,说明符为int: 字符型,说明符为char: 浮点型(又称实型),说明符为float(单精度),double(双精度): 空值型,说明符为void,用于函数 ...

  3. 理解ROS话题

    首先需要打开一个终端在里面运行roscore: roscore 再打开一个终端,在里面运行一个turtlesim_node节点: rosrun turtlesim turtlesim_node 打开另 ...

  4. java——多线程——单例模式的static方法和非static方法是否是线程安全的?

    单例模式的static方法和非static方法是否是线程安全的? 答案是:单例模式的static方法和非static方法是否是线程安全的,与单例模式无关.也就说,如果static方法或者非static ...

  5. ffmpeg用法

    1. help ffmpeg.exe -h > help.txt 2. 解码: ffmpeg -i 123.264 123.yuv ffmpeg -i 123.264 -vframes 200  ...

  6. html 实现网址链接

    <a href="http://acm.nyist.net/JudgeOnline/problemset.php">南工oj</a> HTML学习 < ...

  7. python进阶1--数据库支持

    数据库支持 1.连接和游标 1)connect函数,该函数有多个参数,而具体使用那个参数取决于数据库.--连接数据库 常用参数: dsn:数据源名称 user:用户名 password:用户密码 ho ...

  8. ES6新特性简介

    ES6新特性简介 环境安装 npm install -g babel npm install -g babel-node //提供基于node的REPL环境 //创建 .babelrc 文件 {&qu ...

  9. Less基础教程

    Less基础教程 less是较早出现的css预处理器. LESS API 参考 安装和使用 安装比较简单,通过nmp或bower安装即可. npm install less -g bower inst ...

  10. contextServlet

    一:读取配置文件中的参数信息 1.新建servlet文件ContextServlet1,代码为: import java.io.IOException; import java.util.Enumer ...