首页 > 其他分享 >Stack && Queue 的基本操作

Stack && Queue 的基本操作

时间:2024-06-07 18:30:29浏览次数:19  
标签:MAX top Queue printf front 基本操作 Stack rear

实验内容

        1.采用顺序存储实现栈的初始化、入栈、出栈操作。

        2.采用顺序存储实现循环队列的初始化、入队、出队操作。

代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX 100 


//1.采用顺序存储实现栈的初始化、入栈、出栈操作。
//2.采用顺序存储实现循环队列的初始化、入队、出队操作。
//3.采用链式存储实现栈的初始化、入栈、出栈操作。
//4.采用链式存储实现队列的初始化、入队、出队操作。


/**********************************************************/
//顺序存储栈
typedef struct {
	int val[MAX];
	int top;
}Stack;

void init_stack(Stack* s) {
	s->top = -1;
}

void push_stack(Stack* s) {
	printf("Push Stack:\n");
	if (s->top == MAX) {
		printf("The Stack is Full!\n");
		return;
	}
	printf("请输入要入栈的整数(-1结束): ");
	int a = 1;
	scanf("%d", &a);
	while(a!=-1&&s->top!=MAX){
		s->top++;
		s->val[s->top] = a;
		scanf("%d", &a);
	}
}

void pop_stack(Stack* s) {
	printf("Pop Stack:\n");
	if (s->top == -1) {
		printf("The Stack is Empty!\n");
		return;
	}
	while (s->top != -1) {
		printf("%d ", s->val[s->top]);
		s->top--;
	}
	printf("\n\n");
}

void test_stack() {
	Stack s;
	init_stack(&s);
	push_stack(&s);
	pop_stack(&s);
}

/******************************************************************/
//顺序存储队列
typedef struct {
	int val[MAX+1];
	int front;  //头
	int rear;   //尾
}Queue;

void init_queue(Queue* q) {
	q->front = 0;
	q->rear = 0;
}

void enqueue(Queue* q) {
	printf("Enqueue:\n");
	if ((q->rear + 1) % MAX == q->front) {
		printf("The Queue is Full!\n");
		return;
	}
	printf("请输入要入队的整数(-1结束): ");
	int a = 1;
	scanf("%d", &a);
	while (a != -1&&((q->rear + 1) % MAX != q->front)) {
		q->val[q->rear] = a;
		q->rear = (q->rear + 1) % MAX;
		scanf("%d", &a);
	}
}

void dequeue(Queue* q) {
	printf("Dequeue:\n");
	if (q->front == q->rear) {
		printf("The Queue is Empty!\n");
		return;
	}
	while (q->front != q->rear) {
		printf("%d ", q->val[q->front]);
		q->front = (q->front + 1) % MAX;
	}
		
	printf("\n\n");
}

void test_queue() {
	Queue q;
	init_queue(&q);
	enqueue(&q);
	dequeue(&q);
}

int main() {
	test_stack();
	test_queue();
	return 0;
}

结果展示

标签:MAX,top,Queue,printf,front,基本操作,Stack,rear
From: https://blog.csdn.net/m0_74219898/article/details/139510375

相关文章

  • C++中的priority_queue和deque以及适配器
    C++中的priority_queue和deque一丶priority_queue1.1priority_queue的介绍1.2priority_queue的使用1.3priority_queue的模拟实现二丶deque2.1deque的简单介绍2.2deque的缺陷2.3为什么要选择deque作为stack和queue的迭代器三丶容器适配器3.1什么是适配器3.2S......
  • mongo数据库集合基本操作
    --查看user_info这个集合中name等于张三的数据db.user_info.find({name:"张三"})--查看user_info这个集合中telNum等于123456789的数据db.user_info.find({telNum:123456789})--查看user_info这个集合中name等于张三并且telNum等于123456789的数据db.user_info.f......
  • Hive3.1.2概述与基本操作
    、Hive基本概念1.1 Hive简介Hive本质是将SQL转换为MapReduce的任务进行运算,底层由HDFS来提供数据存储,说白了hive可以理解为一个将SQL转换为MapReduce的任务的工具,甚至更近一步说hive就是一个MapReduce客户端。为什么使用Hive?如果直接使用hadoop的话,人员学习成本太高,项目要......
  • C语言数据结构实现-单链表表基本操作
    链表插入元素同顺序表一样,向链表中增添元素,根据添加位置不同,可分为以下3种情况:插入到链表的头部(头节点之后),作为首元节点;插入到链表中间的某个位置;插入到链表的最末端,作为链表中最后一个数据元素;虽然新元素的插入位置不固定,但是链表插入元素的思想是固定的,只需做以下两步操......
  • SpringAMQP的工作队列WorkQueue
    Workqueue,工作队列,可以提高消息处理速度,避免队列消息堆积 模拟WorkQueue,实现一个队列绑定多个消费者基本思路如下:在publisher服务中定义测试方法,每秒产生50条消息,发送到simple.queue在consumer服务中定义两个消息监听者,都监听simple.queue队列一个消息监听者每秒处理50条消......
  • mysql阶段02 数据库基本操作, 误删用户案例解决, 数据库体系结构, mysql服务构成, mys
    一、数据库基本操作1.设置数据库密码[root@db03~]#mysqladmin-urootpassword'123456'2.使用密码登录#1.正确的登录方式[root@db03~]#mysql-uroot-p123456[root@db03~]#mysql-uroot-p123456#2.错误的登录方式[root@db03~]#mysql-uroot-p123456#3......
  • 用Redisson的延迟队列RDelayedQueue处理延迟任务或者定时任务
    什么是RedissonRedisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。什么是RDelayedQueue获取RDelayedQueue:public<V>RDelayedQueue<V>getDelayedQueue(R......
  • Python数据分析案例45——基于融合模型(Stack)的电商用户购买行为预测
    案例背景最近618快到了,上电商购买的人很多,正好我手上还有这个用户购买行为的数据,就做了一个机器学习模型流程,然后也使用的都是常见的机器学习模型,但是加了一点创新吧,使用了stacking融合模型。简单来说就是使用了很多机器学习模型一起融合,这样的好处在于会降低方差,使预测结果更......
  • C语言数据结构实现-顺序表基本操作
    顺序表,全名顺序存储结构,是线性表的一种。通过《什么是线性表》一节的学习我们知道,线性表用于存储逻辑关系为“一对一”的数据,顺序表自然也不例外。不仅如此,顺序表对数据的物理存储结构也有要求。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时......
  • Java数据结构-delayQueue-优先队列--信号量
    原编辑链接:https://www.yuque.com/zhaozhaozhaozhao-khkij/lp7g2t/blwysxg3ygb00dw6?singleDoc#《3delayqueue》Queue问题单端队列和双端队列,分别对应的实现类是哪个?○Java中的单项队列queue是用链表实现的,Queue本身是一个接口,继承了Collection集合;○双端队列(De......