用C语言实现链队列的基本操作

news2024/11/24 17:48:09

不多解释,直接上代码,代码已经写了注释!

//队列链式结构的基本操作:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
typedef int QueueElememtType;
typedef struct QNode//链队的定义
{
	QueueElememtType data;//数据成员,数据域
	struct QNode* next;//指针域
}QNode, * QueuePtr;
typedef struct//队头队尾指针
{
	QueuePtr front;//还可以写成QNode*front
	QueuePtr rear;//还可以写成QNode*rear
}LinkQueue;
//链队的初始化
void InitQueue(LinkQueue*Q)//将Q初始化为一个空队列
{
	Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));//开辟空间
	if (Q->front != NULL)//表示队Q不为空
	{
		Q->rear = Q->front;//将队列置空
		Q->front->next = NULL;
	}
}
//链队入队操作
int EnterQueue(LinkQueue*Q,QueueElememtType x)
{
	QueuePtr p;
	p = (QueuePtr)malloc(sizeof(QNode));//开辟空间
	if (p != NULL)//说明申请成功
	{
		p->data = x;//将要入队的数据放入
		p->next = NULL;
		Q->rear->next = p;//把p插入队尾
		Q->rear = p;//把p变为队尾
		return 1;
	}
	else
		return 0;
}
//链队的出队操作
int DeleteQueue(LinkQueue*Q,QueueElememtType*x)
{
	QueuePtr p;
	if (Q->front == Q->rear)//表示队列为空
	{
		printf("队列为空\n");
		return 0;
	}
	p = Q->front->next;//头指针为空
	*x= p->data;//将要出队的数据放入指针变量x中
	Q->front->next = p->next;//指针后移
	if (Q->rear == p)
	{
		Q->rear = Q->front;//如果p为队尾
	}
	free(p);//释放p
	return 1;
}
//链队的遍历
int printQueue(LinkQueue* Q)
{
	QueuePtr p;
	printf("链队列中的元素");
	if (Q->front->next != NULL)
	{
		p = Q->front->next;
		do//循环打印队列里的元素
		{
			printf("%d", p->data);
			p = p->next;
		} while (p != NULL);
	}
	else
	{
		printf("队列为空\n");
		printf("\n");
	}
	printf("\n");
	return 0;
}
int main()
{
	QueueElememtType x;
	LinkQueue Q;
	InitQueue(&Q);//初始化队列
	for (int i=0; i < 5; i++)
	{
		int n;
		scanf("%d", &n);
		printf("元素%d 进队\n",n);
		EnterQueue(&Q,n);
		printQueue(&Q);
	}

	printf("进行出队操作!\n");

	for (int i = 5; i>0; i--)
	{
		DeleteQueue(&Q, &x);
		printQueue(&Q);
	}
}

 运行结果:

有不懂的欢迎随时提问!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1305952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习---Adaboost算法

1. Adaboost算法介绍 Adaboost是一种迭代算法&#xff0c;其核心思想是针对同一个训练集训练不同的分类器&#xff08;弱分类器&#xff09;&#xff0c;然 后把这些弱分类器集合起来&#xff0c;构成一个更强的最终分类器&#xff08;强分类器&#xff09;。Adaboost算法本身…

目标检测锚框

目标检测锚框 最开始呢&#xff0c;我们需要先介绍一下框&#xff0c;先学会一下怎么画框 导入所需要的包 from PIL import Image import d2lzh_pytorch as d2l import numpy as np import math import torch展示一下本次实验我们用到的图像&#xff0c;猫狗 d2l.set_figsiz…

基于ReentrantLock详解AQS源码

文章目录 一、公平锁实现FairSync&#xff1a;加锁&#xff1a;释放锁&#xff1a; 二、非公平锁实现NonfairSync&#xff1a;三、图解案例&#xff1a; AQS的全称是AbstractQueuedSynchronizer&#xff0c;它的定位是为Java中几乎所有的锁和同步器提供一个基础框架。AQS是基于…

怎么让gpt帮忙改文章 (1) 快码论文

大家好&#xff0c;今天来聊聊怎么让gpt帮忙改文章 (1)&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 怎么让GPT帮忙改文章 一、背景介绍 随着人工智能的发展&#xff0c;自然语言处理技术已经成为了许…

Mint Blockchain 2024 年发展路线图和开发计划

Mint Blockchain 是一个聚焦在 NFT 领域的 L2 网络&#xff0c;由 NFTScan Labs 和 MintCore 团队联合开发。今天这篇文章&#xff0c;我们主要为大家介绍 Mint 区块链在 2024 年的发展路线图以及开发计划。 Mint Blockchain 2024 Roadmap 2024 Q1 启动 MintPass 活动 2024 Q2…

GEE:使用网格搜索法(Grid Search)求机器学习的最优参数或者参数组合

作者:CSDN @ _养乐多_ 本文记录了在 Google Earth Engine(GEE)平台中,计算机器学习分类算法最优参数的代码,其中包括单一参数的最优和不同参数组合的最优。使用的最优参数计算方法是网格搜索法(Grid Search),GEE 平台上并没有现成的网格搜索法 API,因此,本文在 GEE …

MAC IDEA Maven Springboot

在mac中&#xff0c;使用idea进行maven项目构建 环境配置如何运行maven项目1.直接在IDEA中运行2.使用jar打包后执行 如何搭建spring boot1.添加依赖2.创建入口类3.创建控制器4. 运行5.其他 环境配置 官网安装IDEA使用IDEA的创建新项目选择创建MAEVEN项目测试IDEA的MAVEN路径是…

数据在网络中是怎么传输的?

计算机通信场景大致如下所示&#xff1a; 1.同一个子网中两台计算机通信 2.不属于同一个子网&#xff0c;两台计算机进行通信 以下内容&#xff0c;将围绕这两种场景进行阐述&#xff0c;在阐述之前&#xff0c;先举个场景示例&#xff0c;帮助大家理解一些名词 场景一&…

【Linux环境搭建】Ubuntu 22 安装 InfluxDB 1.8

这里写目录标题 一、下载安装二、启动 一、下载安装 查看安装包 apt-cache search influxdbwget -qO- https://repos.influxdata.com/influxdata-archive_compat.key | sudo apt-key add -source /etc/lsb-releaseecho "deb https://repos.influxdata.com/${DISTRIB_ID,…

华为OD机试真题B卷 Java 实现【统计大写字母个数】,附详细解题思路

一、题目描述 找出给定字符串中大写字符(即’A’-‘Z’)的个数。 数据范围&#xff1a;字符串长度&#xff1a;1≤∣s∣≤250 字符串中可能包含空格或其他字符 二、输入描述 对于每组样例&#xff0c;输入一行&#xff0c;代表待统计的字符串。 三、输出描述 输出一个整…

蓝牙在物联网中的应用,相比WIFI和NFC的优势?

蓝牙在物联网中有着广泛的应用&#xff0c;主要包括以下几个方面&#xff1a; 1、智能家居&#xff1a;蓝牙Mesh技术可以用于智能家居设备之间的连接和通信&#xff0c;实现设备的远程控制和管理。例如&#xff0c;通过蓝牙技术可以将智能音箱、智能电视、智能家电等设备连接起…

ue4 解决角度万向锁的问题 蓝图节点

问题&#xff1a;当角度值从359-1变化的时候&#xff0c;数值会经历358、357… 解决方法&#xff1a;勾上Shortest Path&#xff0c;角度值的会从359-1

智能优化算法应用:基于帝国主义竞争算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于帝国主义竞争算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于帝国主义竞争算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.帝国主义竞争算法4.实验参数设定…

Geotrust中的dv ssl证书

DV SSL数字证书是入门级的数字证书&#xff0c;Geotrust的子品牌RapidSSL旗下的SSL数字证书产品都是入门级的SSL数字证书——DV基础型单域名SSL证书和DV基础型通配符SSL证书。今天就随SSL盾小编了解Geotrust旗下的DV SSL证书。 1.Geotrust旗下的DV基础型单域名SSL证书能够保护…

阿里云服务器ECS安全组开启端口教程

阿里云服务器安全组开启端口教程 云服务器 ECS&#xff08;Elastic Compute Service&#xff09; 云服务器 ECS&#xff08;Elastic Compute Service&#xff09;是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;助您降低 IT 成本&#xff0c;提升运维效率&#xff0c;使您…

[AutoSar]状态管理(二)单核 ECUM wakeup 流程——Can唤醒流程(TJA1043)

目录 关键词平台说明一 、前言二、wakeup2.1 wakeup source和Check-Wakeup Validation2.2Can唤醒流程&#xff08;TJA1043&#xff09;2.2.1 相关配置2.2.1.1 EcuM2.2.1.2 CanIF 2.2.2 序列图2.2.3流程和code 关键词 嵌入式、C语言、autosar、EcuM、wakeup、flex 平台说明 项…

配置android sudio出现的错误

导入demo工程&#xff0c;配置过程参考&#xff1a; AndroidStudio导入项目的正确方式&#xff0c;修改gradle配置 错误&#xff1a;Namespace not specified. Specify a namespace in the module’s build file. 并定位在下图位置&#xff1a; 原因&#xff1a;Android 大括号…

数据挖掘目标(Kaggle Titanic 生存测试)

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns1.数据导入 In [2]: train_data pd.read_csv(r../老师文件/train.csv) test_data pd.read_csv(r../老师文件/test.csv) labels pd.read_csv(r../老师文件/label.csv)[Su…

OpenAI Q* (Q Star)简单介绍

一、Q Star 名称由来 Q* 的两个可能来源如下&#xff1a; 1&#xff09;Q 可能是指 "Q-learning"&#xff0c;这是一种用于强化学习的机器学习算法。 Q 名称的由来*&#xff1a;把 "Q*"想象成超级智能机器人的昵称。 Q 的意思是这个机器人非常善于做决定…

安装Anaconda和pytorch

首先看下自己电脑是否有英伟达的显卡&#xff0c;如果有的话可以安装GPU版本&#xff0c;没有的话可以安装CPU版本。 CPU版本 1.安装Anaconda 首先去官网下载Anaconda。 点击download&#xff0c;下载的就是最新版本的。 下载完成后&#xff0c;直接运行下步就行 注意到路径…