C语言实现动态数组队列

代码都是自己手把手敲出来的, 难免会有错误,如果我发现了,就会改。

  • 动态数组队列的实现有下面两种情况:
    * ①若队列不空,尾指针指向队列尾元素的下一个位置
    * ②若队列不空,尾指针指向队列尾元素

②比①,访问尾部元素会快点。数据结构是根据具体应用场景,选择不同的实现方式。

我实现这个队列的原因是, 我想要实现二叉树的层序遍历。
这里还可以继续深入实现泛型。代码根据需求改动。
动态数组队列, 队列的大小是在程序运行过程中确定的;或者队列大小在程序运行当中是可变的。可以选择动态数组实现。
如果队列大小是不变的,那就选择静态数组的方式实现。
如果队列的大小很难确定,那可以选择链式结构实实现。
如果追求速度呢… 具体问题具体分析
下面的程序已在Ubuntu 下使用gdb调试验证过了,调试程序自己写的,验证可能不充分,因为后续自己也发现了一些问题。关于gdb调试器的使用网上有很多资料
https://blog.csdn.net/zzymusic/article/details/4815142
如果类型是自定义类型, 把类型定义 包含进来就行了

/********************************************************************************
* Copyright(c) 2019-20xx
* All right resered.
*
* @file  	dynamic_queue.h
* @author 	hongsmallgod
* @version	V1.0.1
* @data		2019-9-10 10:31:28
* @brief	动态数组头文件
********************************************************************************/
#ifndef _DYNAMIC_QUEUE_H
#define _DYNAMIC_QUEUE_H
#define TAIL  0 /* 若队列不空,尾指针指向队列尾元素的下一个位置 */
#define TAIL1 1 /* 若队列不空,尾指针指向队列尾元素 */
#define dynamic_array_queue  TAIL1

typedef int element; /* 队列元素类型 */
typedef struct queue queue;
struct queue {
   
    int front;
    int rear;
    element *data;
    int size; /* 队列的大小 */
	/* 函数(方法) */
	int (*num)(queue *); /* 元素数量 */
	int (*enqueue)(queue *, element); /* 入队操作 */
	int  (*dequeue)(queue *, element *); /* 出队操作 */
	int (*head)(queue *, element *); /* 获取队列头元素, 不改变队列 */
	int (*tail)(queue *, element *);  /* 获取队列尾元素, 不改变队列 */
    int (*full)(queue *); /* 判断队列是否已满 */
    int (*empty
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值