链队列之C++实现

C++链队列的模板实现 C++链队列的模板实现 #pragma once //链队列的实现 #include <iostream> using namespace std; template<typename DataType> struct Node { DataType data; Node<DataType>* next; }; template<typename... 阅读详情

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

          链队列的形式如下:

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;
}
Python进行.tif格式数据波段组合;多波段tif数据波段分离 Python进行.tif格式数据波段组合;多波段tif数据波段分离.tif格式数据波段组合多波段.tif数据波段分离 阔别已久,我又来了;啊啊啊…… 读了研究生,忙到天昏地暗(哈哈哈,这都是借口,主要是花了一定时间适应研究生生活) 这方面的内容我也主要是应用在遥感领域,我们知道在遥感应用中,大多数的图像数据格式为.tif格式的。进行波段组合使用ArcGIS里面的Composite Bands工具是可以实现的,波段分离也可以使用一些工具或巧妙的方法分开。但当你使用Python程序的话,就可以简化这个软件点击和 阅读详情

相关推荐

MATLAB创建GUI面板实现二维码生成与识别

利用matlab设计gui界面实现二维码的生成与内容识别

infinitystardust的博客 3150

C/C++实现队列的链式结构(链队)

定义:用链表表示的队列简称为链队列。为了操作方便,这里采用带头结点的链表结构,并设置一个队头front和一个队尾指针rear,如图①图②所示。对头指针始终指向头结点,队尾指针指向最后一个元素。空的链队列的队头指针和队尾指针均指向头结点。 队列的基操作: ①InitQueue(Q) ②IsEmpty(Q) ③IsFull(Q) ④EnterQueue(Q) ⑤DeleteQueue(Q) ⑥GetHead(Q) ⑦ClearQueue(Q) ...

m0_54202580的博客 2442

unity中基于NGUI实现一张图片上在某个地方挖个洞

按照策划的要求,引导时只有被引导的图片是高亮的,其余地方都是黑色半透明,如下图所示: 对应的实现shader如下: Shader "Unlit/TutorialBg" { Properties { _MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {} _ClipRange0 ("Clip Vector

手机游戏开发 3698

数据结构——链式队列(C++)

链式队列1.定义队列类2.队列类Queue的构造函数和析构函数3.Push()函数4.Pop()函数5.Empty()函数6.Size()函数7.Front()和Rear()函数完整代码及测试 队列的简介,可参考:队列简介及常用操作 1.定义队列类 由于使用的是式结构,所以在队列类中定义了一个队列节点结构。定义了队首和队尾两个数据成员。 template <typename T> class Queue { public: Queue(); ~Queue(); void Push(con

weixin_43744293的博客 2168

DETR系列文章之–Co-DETR

Co-DETR,并行训练多个辅助头,以一对多的标签分配方式进行监督从辅助头中提取正样本坐标,为解码器中的正样本的训练效率进行额外的定制化正样本query.一对一标签分配:每个GT框分配给一个特定的query(DETR),较少的正query导致低效训练,从编码器生成的潜在表示和解码器中的注意力学习分析这一问题。一对多标签分配:每个GT框分配给检测器输出的多个proposal/anchor,依赖NMS或者anchor生成(ATSS,RetinaNet,FCOS,PAA)。

weixin_43731232的博客 2119

IEC61850 通信协议测试验证实战指南:从理论到实践

本文提供了一份全面的IEC61850通信协议测试验证实战指南,强调测试必须从理论走向工程实践。文章详细讲解了如何搭建测试环境,并深入剖析了MMS、GOOSE、SV三大核心协议的实战测试方法,旨在帮助工程师通过系统化的测试验证,确保电力自动化设备的互操作性与通信可靠性。

weixin_29204121的博客 171

链式队列的实现

链式队列的概念 1.1 链式队列的定义 链式队列是基于单链表(带头结点)的存储表示实现的队列。 1.2 链式队列中各元素的逻辑及存储关系 链式队列可以采用单链表作为其存储表示,因此,可以在链式队列的声明中用单链表定义它的存储空间。 链式队列的队头指针指向单链表的第一个结点,队尾指针指向单链表的最后一个结点。 注:链式队列的队头元素存放在单链表的第一个结点内,若要从队列中退出一个元素,必须从单链表中删去第一个结点,而存放着新元素的结点应插在队列的队尾,即单链表的最后一个结点后面,这个新节点将成为新的

PingBryant的博客 2750

13、超声断层乳腺图像融合算法:乳腺癌诊断新突破

本文介绍了一种新型超声断层乳腺图像融合算法,通过结合超声透射(UTTc、UTTα)和反射断层图像(URT),实现对乳腺组织的多参数自动可视化。该算法能有效区分良性与恶性肿瘤,具有高准确性、无辐射、低成本等优势,适用于大规模乳腺癌早期筛查。初步临床测试验证了其可行性,未来有望成为乳腺癌诊断的新标准。

9q8w7e6r5的博客 156

链队列(详解)--->数据结构、C++实现

链队列(详解)--->数据结构(队列)、C++实现

m0_54158068的博客 7349

DC/DC开关电源学习笔记(十三)Buck-Boost升降压电路工作原理

Buck-Boost电路是一种能够实现输出电压高于或低于输入电压的DC-DC变换器,且输出电压极性与输入电压相反。它结合了Buck(降压)和Boost(升压)两种拓扑的特点,广泛应用于需要灵活电压调整的场合,如电池供电设备、LED驱动和工业控制系统。本文将从电路结构、工作原理、关键公式推导及实际应用等方面进行详细分析。

小幽余生不加糖 3507

AI应用质量工程实践:从评估到监控的完整体系构建

在软件工程领域,质量保障体系是确保产品稳定可靠的核心机制,涉及度量指标、保障流程和工具链的完整闭环。随着生成式AI应用的快速发展,如何将传统软件工程中的质量门禁思想引入AI领域,成为工程实践的关键挑战。其核心原理在于构建可量化、可监控、可改进的质量评估框架,通过自动化测试、持续监控和反馈优化来管理AI输出的不确定性。这一技术价值在于将AI应用从原型阶段推向产品化,确保输出的一致性、安全性和可靠性。在实际应用场景中,开发者需要从功能性、非功能性、一致性和合规性四个维度构建评估体系,并借助LLM-as-a-Ju

weixin_28728279的博客 294

数据结构——队列(链队)

链结点的定义,链式存储结构由结点相连而成, class Qnode { public: int data = 0; Qnode* next = nullptr; }; 构造函数,实现链队列的初始化,把初始化时的队列当作空队列,第一个结点不作数据存储 析构函数,回收链队申请的内存 class Linkqueue { public: Qnode* front;//队头指针 Qnode* rear;//队尾指针 Linkqueue() { front = new Qnode(); .

weixin_44823313的博客 391

增距镜或中继镜选型

增距镜光路图

camerall 5248

链队列C++实现

链队列时建立在单链表的基础之上的。由于是动态分配节点内存,所以无需判满。           链队列的形式如下: 1、队列空 2、队列存在数据            下面介绍下C++实现的链队列,VC6下调试通过。 1、文件组织   2、lq.h链队列类的说明 [cpp] view plaincopyprin

1028

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C++实现顺序队列和链队列

文章目录一,队列的相关概念1,队列的定义2,队列的应用二,顺序队列实现三,链队列实现 一,队列的相关概念 1,队列的定义 2,队列的应用 二,顺序队列实现 #include<iostream> using namespace std; #define MaxSize 100 template<typename T> class Queue { private: int front; //队头 int rear; //队尾 T *list; public:

qq_46027243的博客 374

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C++ 链队列的实现

C++ 链队列的实现!定义qnode时候,模板和typedef不能同时使用 //IQueue.h #pragma once #include using namespace std; template struct qnode //typedef和模板不能一起用 { T data; struct qnode *next; } ; temp

u011355892的专栏 390

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

有序排队不插队的队列之c++实现链队列

有序排队不插队的队列之c++实现循环队列 链队 链队就是采用链式存储结构存储队列,链队的特点就是不存在队满上溢的情况。 链队的要素 队空状态 lqu->rear==NULL或者lqu->front==NULL 队满状态:不存在队满的情况(假设内存无限大的情况不存在)。 元素进队操作(假设p指向进队元素) lqu->rear->next=p; lqu->rea...

欢迎来到小骆的空间 458

C++实现循环队列&链队列(详解循环队列队头指空)

C++实现循环队列(详解队头指空) 循环队列.hpp #include <iostream> using namespace std; const int MAXSIZE = 1024; template <class T> class CircleQueue { public: CircleQueue() { front = rear = 0; }; void EnQueue(T data); T DeQueue(); T GetFront() { if (rear

qq_36028321的博客 462

链队列(c++实现)

Create_LQueue(int size) 创建大小为size的链队列 Push_LQueue(datatype x) queue.push()操作数入队 Pop_LQueue() queue.pop()队列尾部出队 //链队列 #include<bits/stdc++.h> using namespace std; typedef int datatype; class Node{ public: datatype data; Node .

私が悪いのではなく、この世界が悪いのです 253

循环队列和链队列的C++实现

队列可以分为顺序队列,循环队列以及链队列 顺序队列: (1)如果队首元素删除之后,所有元素不移动,那么入队和出队操作的时间复杂度是O(1) (2)如果队首元素删除之后,所有元素都要往前移动一位,那么入队的时间复杂度是O(1),出队的复杂度是O(n) 第一种做法在时间复杂度上比第二种做法要优越,但是可能会发生"假溢出",也就是数组的低端还有空闲位置,但是数组的高端却被插满了 循环队列: 循环队列则可...

weixin_44022275的博客 371

链队列的C++实现

链队列从本质上来看就是操作受限的单链表,其中表尾代表队头,首元结点代表队尾(方便插入操作)。编写主函数测试:sketch.cpp。头文件:LinkQueue.hpp。每天都要加油哦 ^_^

m0_73678116的博客 251

c++ 链队列的实现

链队列它有两个指针操作,一个是队首指针,一个是队尾指针,节点删除移动队首指针,节点插入移动队尾指针,同时队列具有先进先出的特点。可用于模拟银行叫号系统 代码: #include&lt;iostream&gt; #include&lt;cstdlib&gt; using namespace std; //定义队列结点的数据结构 struct QNode { QNode *next;//指针域...

丫丫的博客 785

顺序循环队列和链队列的C/C++语言描述实现模板

数据结构中顺序循环队列和链队列的C/C++语言描述实现模板,有详细的步骤解析及使用示例。

夜悊的博客 963

C++ 链队列基本算法实现

C++ 链队列基本算法实现 #ifndef LinkQueue_h #define LinkQueue_h #include <iostream> template <class T> struct Node{ T data; struct Node <T> * next; }; template <class T&g...

weixin_34342905的博客 180

C++代码实现链队列详解

本篇文章就到这里了,希望能够给你带来帮助,

raoxiaoz0425的博客 165

链队列的基本操作C/C++代码实现

链队列的结构: 链队列与单链表相同但与链栈不同的是,链队列需要添加一个头结点,并让头指针始终指向头结点。 入队: 链队列也不需要判断队满。 出队: 链队列队空条件:Q.front==Q.rear (与循环队列形式相同) 需要特别注意的是:需要判断出队元素是否为最后一个元素,若是,则将队尾指针重新赋值, 指向头结点。 (否则尾指针将丢失) 代码如下: #include<stdio.h> #include<stdlib.h> #define MAXQSIZE 100 typede

Ycy的博客 5444
上一篇: 顺序队列之C++实现
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值