首页 > 其他分享 >链式队列实现

链式队列实现

时间:2024-03-31 23:58:55浏览次数:26  
标签:return 队列 printf list next 实现 链式 front rear

typedef struct list//创建队列中的链式结构
{
	datatype data;//数据域
	struct list* next;//指针域
}list;

typedef struct queue//创建队列
{
	list* front;//队头
	list* rear;//队尾
}queue;

void initqueue(queue* q)//初始化队列
{
	q->front = q->rear = (list*)malloc(sizeof(list));//使队头和队尾指向同一块内存区域
	if (q->front == NULL)
	{
		printf("error\n");
		return;
	}
	q->front->next = NULL;//队头(队尾)的下一个节点都是空
}

bool isempty(queue* q)
{
	if (q->front == q->rear || q->front->next == NULL)
	{
		return true;
	}
	return false;
}

void enqueue(queue* q)
{
	printf("输入入队的元素值\n");
	datatype element;
	scanf("%d", &element);
	list* newnode = (list*)malloc(sizeof(list));
	if (newnode == NULL)
	{
		printf("error\n");
		return;
	}
	newnode->next = NULL;
	newnode->data = element;//12345
	q->rear->next = newnode;//         12345
	q->rear = newnode;    //          f    r
}

datatype outqueue(queue* q)
{
	if (q->front == q->rear || q->front->next == NULL)
	{
		printf("empty\n");
		exit(1);
	}
	list* pointer;
	datatype temp;
	pointer = q->front->next;
	temp = pointer->data;
	q->front->next = pointer->next;           //12345
	if (pointer == q->rear)   //               f
	{                              //          r 
		//printf("empty\n");
		q->rear = q->front;
	}
	return temp;
}

int main()
{
	queue q;
	initqueue(&q);//初始化队列
	bool flag = isempty(&q);
	if (!flag)
	{
		printf("error\n");
		return -1;
	}
	int i = 0;
	printf("要加入几个元素\n");
	int n;
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		enqueue(&q);
	}
	for (i = 0; i < 5; i++)
	{
		printf("%d ", outqueue(&q));
	}
	return 0;
}

标签:return,队列,printf,list,next,实现,链式,front,rear
From: https://blog.csdn.net/Aishangyuwen/article/details/137213134

相关文章

  • PyQt:【重磅干货】实现一个自定义样式的窗口(比如去掉边框、改变标题位置、窗口按钮样式
    如果想突破PyQt自带窗口的样式限制,比如同时去掉窗口的边框、改变边框、改变标题位置、窗口控制按钮等等,那就需要实现一个自定义样式的窗口,本文教你如何实现先来看看PyQt创建窗口的默认样式:再看看一个自定义样式的窗口:可以看到,这里示例的自定义窗口去掉了窗口的边框、改......
  • Java实现ATM机模拟系统(week1)
    目录目的项目规划(第一周)ATM机系统第一周需求分析账户管理大类Account(账户)类AccountOperations(对账户操作)接口创建账户账户内容管理账户权限管理User类UserOperations(用户操作)接口Operations类货币大类基本属性方法操作界面合作开发(利用git)后言 ......
  • 【C语言】从零开始:用C语言实现顺序表
    欢迎来CILMY23的博客本篇主题为 从零开始:用C语言实现顺序表个人主页:CILMY23-CSDN博客C语言专栏:http://t.csdnimg.cn/hQ5a9Python系列专栏:http://t.csdnimg.cn/HqYo8上一篇C语言博客: http://t.csdnimg.cn/I4Zgf感谢观看,支持的可以给个一键三连,点赞关注+收藏。目录一......
  • 基于Python实现多功能翻译助手(下)
            为了将上述步骤中的功能增强与扩展具体化为代码,我们将实现翻译历史记录功能、翻译选项配置以及UI的改进。翻译历史记录功能importjson#假设有一个用于存储历史记录的json文件HISTORY_FILE='translation_history.json'#初始化历史记......
  • Python数据结构与算法——数据结构(栈、队列)
    目录数据结构介绍列表栈栈的基本操作:栈的实现(使用一般列表结构即可实现):栈的应用——括号匹配问题队列队列的实现方式——环形队列 队列的实现方式——双向队列 队列内置模块栈和队列应用——迷宫问题栈——深度优先搜索 队列——广度优先搜索数据结构介绍......
  • 11天【代码随想录算法训练营34期】 第五章 栈与队列part02(● 20. 有效的括号 ● 1047
    20.有效的括号classSolution:defisValid(self,s:str)->bool:stk=[]upper=["(","{","["]lower=[")","}","]"]dictionary={")":"(&qu......
  • 用do…while实现冒险打怪游戏
    今天我们来讲一下介绍C语言循环结构中的while循环和do…while以及分别使用while循环实现游戏玩家生命值回复和使用do…while循环实现打怪冒险游戏。一、while循环1.while循环的语法结构while(condition){//循环体,当条件为真时执行//可以是单条语句或多条语句}conditi......
  • 基于SSM的在校学习网站设计与实现
    系统描述现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本在校学习网站就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,......
  • 基于Spring Boot的协同过滤体育商品推荐系统设计与实现
    目录前言 一、技术栈二、系统功能介绍三、核心代码1、登录模块 2、文件上传模块3、代码封装前言相比于传统的体育商品推荐方式,个性化智能的管理方式可以大幅提高体育商品推荐的管理效率,实现了个性化智能体育商品推荐的标准化、制度化、程序化的管理,有效地防止了......
  • 手动实现一个时间轮
    手动实现一个时间轮//包timewheel提供了一个简单的时间轮调度器的实现。packagetimewheelimport( "container/list"//引入list包来使用双向链表 "context"//引入context包来进行上下文控制 "time"//引入time包来处理时间相关的功能)/......