首页 > 其他分享 >day 6 栈与队列的简单运用

day 6 栈与队列的简单运用

时间:2024-12-18 20:59:58浏览次数:5  
标签:int return 队列 queuePtr Add printf 运用 NULL day

源文件:

#include"queue.h"

queuePtr caerte()
{
	queuePtr q=(queuePtr)malloc(sizeof(queue));
	if(NULL==q)
	{
		printf("申请失败\n");
		return NULL;
	}
	q->front=q->tail=0;
	printf("创建成功\n");
	return q;
}

int empt(queuePtr q)
{
	if(NULL==q)
	{
		printf("判空失败\n");
		return -1;
	}
	return q->front==q->tail;
}
int  full(queuePtr q)
{
	if(NULL==q)
	{
		printf("判满失败\n");
		return 0;
	}

	return (q->tail+1)%MAX==q->front;
}

void Add(queuePtr q,DataType a)
{
	if(NULL==q||full(q))
	{
		printf("入队失败\n");
		return ;
	}
	q->data[q->tail]=a;
	q->tail=(q->tail+1)%MAX;
	return ;
}

void show(queuePtr q)
{
	if(NULL==q||empt(q))
	{
		printf("遍历失败\n");
		return ;
	}
	for(int i=q->front;i%MAX!=q->tail;i=(i+1)%MAX)
	{
		printf("%d->",q->data[i]);
	}
	putchar(10);
	return ;
}
void push(queuePtr q)
{
	if(NULL==q||empt(q))
	{
		printf("出队失败\n");
		return ;
	}
	printf("出队数据:%d\n",q->data[q->front]);
	q->front=(q->front+1)%MAX;
	return ;
}

void size(queuePtr q)
{
	if(NULL==q)
	{
		printf("失败\n");
		return ;
	}
	int a=0;
	for(int i=q->front;i%MAX!=q->tail;i++)
	{
		a++;
	}
	printf("size= %d\n",a);
	return ;
}

void My_free(queuePtr q)
{
	if(NULL==q)
	{
		printf("销毁失败\n");
		return ;
	}
	free(q);
	printf("销毁成功\n");
	q=NULL;
	return;
}

头文件:

#ifndef __QUEUE__
#define __QUEUE__

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

#define MAX 8

#endif

typedef int DataType;

typedef struct sequence
{
	DataType data[MAX];
	int front;
	int tail;
}queue,*queuePtr;

queuePtr caerte();

int empt(queuePtr q);

int full(queuePtr q);

void Add(queuePtr q,DataType a);

void show(queuePtr q);

void push(queuePtr q);

void size(queuePtr q);

void My_free(queuePtr q);

 测试文件:main文件

#include"queue.h"

int main()
{
	queuePtr q=caerte();

	Add(q,1);
	Add(q,2);
	Add(q,3);
	Add(q,4);
	Add(q,5);
	Add(q,6);
	Add(q,7);

	show(q);

	push(q);
	push(q);
	push(q);
	show(q);

	Add(q,77);
	show(q);
	Add(q,88);
	show(q);
	Add(q,99);
	show(q);

	size(q);

	My_free(q);
	q=NULL;

	return 0;
}

 运行截图:

标签:int,return,队列,queuePtr,Add,printf,运用,NULL,day
From: https://blog.csdn.net/qq_64881918/article/details/144569499

相关文章

  • 【每日刷题】Day172
    【每日刷题】Day172......
  • Day6数据结构
    完成单向循环链表的所有操作【创建、判空、尾插、遍历、尾删、销毁】looplink.h#ifndef__LOOPLINK_H__#define__LOOPLINK_H__#include<stdio.h>#include<stdlib.h>#include"looplink.h"typedefintDateType;typedefstructnode{ union { DateTypedate; ......
  • 说说你对推荐算法的理解,它有哪些运用场景?你认为它的优缺点是什么?
    推荐算法是计算机专业中的一种重要算法,它通过一些数学方法,基于用户的历史行为数据和物品特征信息,推测出用户可能感兴趣的内容,并向用户进行推荐。这种算法在各个领域都有广泛的应用,以下是我对推荐算法的理解以及它的运用场景、优缺点的分析:一、理解推荐算法的核心思想是利用用户......
  • 常见的Linux系统下安装分布式消息队列Kafka的详细步骤
    一、安装前提条件Java环境安装Kafka是用Scala编写的,运行在Java虚拟机(JVM)上,所以需要先安装Java。可以通过以下命令检查系统是否已安装Java:java-version如果没有安装,可以根据操作系统的不同,从Oracle官方网站(https://www.oracle.com/java/technologies/javase-downloads.ht......
  • 洛谷 B3644 【模板】拓扑排序 / 家谱树 C语言(链表队列写法)
    题目: https://www.luogu.com.cn/problem/B3644 题目描述有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的后代的信息。输出一个序列,使得每个人的后辈都比那个人后列出。 输入格式第1行一个整数N(1≤N≤100),表示家族的人数。接下来N行,第i行......
  • markdown最基本的语法快捷语法运用
    Markdown学习后缀xxx.md标题:+标题名字(#后要加空格)或者ctrl+数字也可以快速二级标题##(最后一个#后要加空格)同理...(三级四级最多到六级...)字体hello,world!**之间的字体是斜体引用(>+空格)分割线三个-或者三个*图片插入:!+[命名]+(图片链接地址)超链接[点击跳转]+(......
  • 优先队列
    P1090[NOIP2004提高组]合并果子/[USACO06NOV]FenceRepairG以此题为例,进行优先队列的基本使用AC代码//优先队列#include<bits/stdc++.h>usingnamespacestd;intn,x,ans;priority_queue<int,vector<int>,greater<int>>m;//优先队列的创建,并且数字从小到大排序,如......
  • JAVA-MQ设置动态的过期队列
    在开发场景中,如预约的签到,用户会有不同的预约签到时间,例如;7:00,7:30,8:00那么,对于这种场景,使用如定点轮询查表的方式,一方面时间颗粒度需要严格的控制,另一方面在数据库的记录一多就很浪费性能,所以我们可以考虑使用mq的过期队列来实现功能基于mq的死信队列,首先将信息存活时间......
  • 数据结构之栈和队列算法题
    一:有效括号数学了栈之后这一题就比较简单了。思路:1、左括号进栈2、右括号出栈匹配。完整代码:因为使用C语言写的,所以里面包含了栈的实现#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>typedefintSTDataType;typedefstructStack{ ......
  • 分布式消息队列Kafka
    什么是KafkaKafka是一个分布式的、分区的、多副本的、基于发布/订阅模式的消息队列系统。它最初由LinkedIn开发,后来成为Apache的开源项目。主要用于处理大规模的实时数据,能够高效地处理大量的消息传递。例如,在一个电商平台中,用户的下单信息、商品浏览记录等数据可以通过Kafka......