链队列之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 ...
随机推荐
- java中log4j的使用体验
log4j相信大部分java开发者都已经很熟悉了,在此记录下自己的使用过程. 一.文件准备: 1.log4j.jar(我这里使用的版本是log4j-1.2.17.jar,在附件中提供下载) 2.log ...
- matlab GUI之常用对话框(一)-- uigetfile\ uiputfile \ uisetcolor \ uisetfont
常用对话框(一) 1.uigetfile 文件打开对话框 调用格式: [FileName,PathName,FilterIndex]=uigetfile or [FileName, ...
- SQL server与Oracle触发器的创建与使用
SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...
- WinSock网络编程基础(1)
记录学习windows网络编程过程中遇到的问题和相关笔记 基本概念: Socket: socket起源于UNIX,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.基于&qu ...
- 有一个警告:Could not open/create prefs root node
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. 虽然程序也能正常运 ...
- win7本地搭建git ssh服务器
本来是想在gogs上用ssh的,结果弄了好几次还没整明白,希望等他们的更新内置吧. 但是,意外收获,还是成功搭建了本地ssh服务器,只是没有和gogs成功关联. 简要记录一下: 主要软件: msysg ...
- C 查找子字符串
自己用 C 写的一个查找子字符串的函数 int findstr(char *str,char *substr) //C实现 find{ if(NULL == str || NULL== substr) ...
- elk 日志处理的一点思路
zjtest7-frontend:/usr/local/logstash-2.3.4/bin# ./logstash -f ../config/logstash_agent.conf zjtest7- ...
- jQuery中on()方法用法实例详解
这篇文章主要介绍了jQuery中on()方法用法,实例分析了on()方法的功能及各种常见的使用技巧,并对比分析了与bind(),live(),delegate()等方法的区别,需要的朋友可以参考下 本 ...
- Extjs4 类的定义和扩展
一般定义方式,注意方法和函数的添加方式不同.(添加函数只能用override方式添加不知为什么,有知道的,请搞之.) 定义一个类,并给他一个方法 1: Ext.define('Simple.Class ...