上新啦 数据结构之队列

数据结构之队列
1概念:在一端进行数据插入(入队列)),在另一端进行删除(出队列)
2.特点 :先进先出 (恶心 比喻 哈哈哈 .:先吃进去的先拉出来);
3 .具体的实现:我们是以链表的形式对队列来进行操作的.
4 代码实现过程:
第一部分 :创建头文件"queuek.h" 这部分我们定义队列的结构,以及声明一下队列的操作函数

#pragma once

typedef int QDataType;
//定义节点的结构
typedef struct  QNode{
	struct	QNode *_pNext;
	QDataType _data;
}QNode;
//定义队列
typedef  struct	Queue{
	QNode* _front;//指向队头元素
	QNode*_back;//指向队尾元素
}Queue;

void QueueInit(Queue*q);
void QueuePush(Queue*q, QDataType data);
void QueuePop(Queue*q);
QDataType QueueFront(Queue*q);
QDataType QueueBack(Queue*q);
int QueueSize(Queue*q);
int QueueEmpty(Queue*q);
void QueueDestory(Queue*q);

void TestQueue();

第二部分 ,我们创建一个 源文件queue.c" 这一部分我们具体定义一下各个操作函数的功能,


	else{
		q->_back->_pNext = pNewNode;
		q->_back = pNewNode;
	}
}
void QueuePop(Queue*q){
	assert(q);

	if (QueueEmpty(q)){
		return ;
	}
	QNode*pDelNode = q->_front;
	if (NULL == pDelNode->_pNext){
		q->_front = q->_back = NULL;
	}
	else{
		q->_front = pDelNode->_pNext;
	}
	free(pDelNode);
}
QDataType QueueFront(Queue*q){
	assert(q);
	return q->_front->_data;
}
QDataType QueueBack(Queue*q){
	assert(q);
	return q->_back->_data;
}
int QueueSize(Queue*q){
	int count = 0;
	QNode*pcur = q->_front;
	while (pcur){
		count++;
		pcur = pcur->_pNext;
	}
	return count;
}
int QueueEmpty(Queue*q){
	assert(q);
	return NULL == q->_front;
}
void QueueDestory(Queue*q){
	QNode*pcur = q->_front;
	while (pcur){
		q->_front = pcur->_pNext;
		free(pcur);
		pcur = q->_front;
	}
	q->_front = q->_back = NULL;
}

void TestQueue(){
	Queue  q;
	QueueInit(&q);
	QueuePush(&q, 1);
	QueuePush(&q, 2);
	QueuePush(&q, 3);
	QueuePush(&q, 4);

	printf("front=%d\n", QueueFront(&q));
	printf("back=%d\n", QueueBack(&q));
	printf("size=%d\n", QueueSize(&q));

	QueuePop(&q);
	printf("front=%d\n", QueueFront(&q));
	printf("back=%d\n", QueueBack(&q));
	printf("size=%d\n", QueueSize(&q));

	QueuePop(&q);
	QueuePop(&q);
	printf("front=%d\n", QueueFront(&q));
	printf("back=%d\n", QueueBack(&q));
	printf("size=%d\n", QueueSize(&q));

	QueuePop(&q);
	
	printf("size=%d\n", QueueSize(&q));








	QueueDestory(&q);
}

第三部分 ,我们创建一个头文件"test.c" 定义函数的入口函数 main

#include"queue.h"
#include<stdio.h>
#include<stdlib.h>


int  main(){
	TestQueue();
		system("pause");
		return 0;

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、据库、硬件开发、大据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值