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

你可能感兴趣的:(#,队列,数据结构,C语言实现动态队列)