链式队列的实现(头文件及源程序)

Linkedqueue.h

#ifndef __LINKEDQUEUE_H__
#define __LINKEDQUEUE_H__//元素类型定义
typedef int ElemType_Queue;//结点结构体类型定义
typedef struct Node_Queue
{ElemType_Queue data;struct Node_Queue *next;}Node_Queue;//链表类型定义
typedef struct Linkedqueue
{int num;Node_Queue *rear;Node_Queue *front;
}Linkedqueue;//链表初始化
Linkedqueue *Init_Linkedqueue();//创建一个新结点
Node_Queue *Create_New_Node_Queue(ElemType_Queue value);//入队
void push_Queue(Linkedqueue *linkedqueue, ElemType_Queue value);//出队
void pop_Queue(Linkedqueue *linkedqueue);//获取队头
ElemType_Queue get_QueueHead(Linkedqueue *linkedqueue);//判断是否空队
int empty_Queue(Linkedqueue *linkedqueue);//销毁一个队列
//ForwardListHead *destroy_ForwardListHead(ForwardListHead *forwardlisthead);void destroy_Queue(Linkedqueue *linkedqueue);//获取队列长度
int length_Queue(Linkedqueue *linkedqueue);#endif

Linkedqueue.c

#include <stdio.h>
#include <stdlib.h>
#include "linkedqueue.h"//队列初始化
Linkedqueue *Init_Linkedqueue()
{Linkedqueue *linkedqueue = malloc(sizeof(Linkedqueue));linkedqueue->num = 0;linkedqueue->rear = NULL;linkedqueue->front = NULL;return linkedqueue;
}//创建一个新结点
Node_Queue *Create_New_Node_Queue(ElemType_Queue value)
{Node_Queue *new_node = malloc(sizeof(Node_Queue));new_node->data = value;new_node->next = NULL;return new_node;
}//入队
void push_Queue(Linkedqueue *linkedqueue, ElemType_Queue value)
{if (linkedqueue == NULL){printf("队列不存在!\n");return;}Node_Queue *new_node = Create_New_Node_Queue(value);if (linkedqueue->num == 0){linkedqueue->rear = new_node;linkedqueue->front = new_node;}else{linkedqueue->rear->next = new_node;linkedqueue->rear = new_node;}linkedqueue->num++;
}//出队
void pop_Queue(Linkedqueue *linkedqueue)
{if (linkedqueue == NULL){printf("队列不存在!\n");return;}Node_Queue *p = linkedqueue->front;linkedqueue->front = p->next;free(p);// p->next = NULL;linkedqueue->num--;
}//销毁一个队列
void destroy_Queue(Linkedqueue *linkedqueue)
{if (linkedqueue == NULL){printf("队列不存在!\n");return;}else{while (linkedqueue->num != 0){pop_Queue(linkedqueue);}//free(linkedqueue);linkedqueue = NULL;}
}//获取队头
ElemType_Queue get_QueueHead(Linkedqueue *linkedqueue)
{if (linkedqueue == NULL){printf("队列不存在!\n");return -1;}if (linkedqueue->num == 0){printf("队已空,获取队头元素失败!");return 0;}else{return linkedqueue->front->data;}
}//获取队列长度
int length_Queue(Linkedqueue *linkedqueue)
{if (linkedqueue == NULL){printf("队列不存在!\n");return 0;}return linkedqueue->num;
}//判断是否空队
int empty_Queue(Linkedqueue *linkedqueue)
{if (linkedqueue == NULL){return -1;//队列不存在}if (linkedqueue->num == 0){return 1; //队空}else{return 0; //队非空}
}

链式队列的实现(头文件及源程序)相关推荐

  1. 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现

    1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似,  例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...

  2. 【数据结构】链式队列的实现(C语言)

    队列的链式存储称为链式队列.链式队列就是一个特殊的单链表,对于这种特殊的单链表,它的插入和删除操作规定在单链表的不同端进行.链式队列的队首和队尾指针分别用front和rear表示. 链式队列要掌握以下 ...

  3. (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题

    http://blog.csdn.net/fisherwan/article/details/20055179 首先要感谢这位大牛的一篇博客,地址如下:http://blog.csdn.net/hgu ...

  4. 数据结构之顺序队列和链式队列常用的一些操作

    顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表.和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素.由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示 ...

  5. 数据结构上机实践第七周项目2 - 自建算法库——链队(链式队列)

    自建算法库--链队(链式队列) 实现源代码如下: 1.liqueue.h /* copyright (t) 2016,烟台大学计算机学院 *All rights reserved. *文件工程名称:1 ...

  6. 刁肥宅手笔:纯C语言实现链式队列的相关操作

    先上图,以图服人: 图一 程序运行截图1 图二 程序运行截图2 上代码: 头文件LinkQueue.h: /*LinkQueue.h*/#ifndef LINKQUEUE_H_INCLUDED #de ...

  7. 链式队列,队列篇(链式队列的出队入队操作)

    数据结构,队列篇(链式队列) 前言: 上一篇博主简单讲解了顺序队列和循环队列,今天讲解队列最后一篇链式队,链式队在数据结构中用到比较多,用来做一些排队的算法,还有链式队列是也是和链式栈一样采用链表的方 ...

  8. c语言建立队列(顺序队列、循化队列和链式队列)

    c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...

  9. c语言队列(顺序队列,循环队列,链式队列)

    顺序队列 1.初始化: front=-1; rear=-1; 2.判空条件 font=rear; 3.队列已满条件 rear=max-1; 代码: #include<stdio.h> #i ...

最新文章

  1. 超实用的58个office快捷键汇总,办公室人员必备!
  2. shared_ptr 用法
  3. Windows核心编程 第十九章 DLL基础
  4. c++申请内存空间_有没有想过:malloc分配的内存空间地址连续吗
  5. java八种排序算法---直接插入排序
  6. Android工程中追踪修改bug的总结
  7. 动态规划法(五)钢条切割问题(rod cutting problem)
  8. 随想录(我熟知的几个实时操作系统)
  9. c++类中的static详解(续)
  10. 「CSDN 2020年度博客之星」总榜单在此揭晓
  11. Vue中computed 计算机属性、getter、setter
  12. 【胸片分割】基于matlab GUI最小误差法胸片分割系统【含Matlab源码 1065期】
  13. 基础集合论 第一章 3 集合论的公式和条件
  14. c语言二级选择题APP,C语言二级题库
  15. 简易中控紫猫插件版(1)
  16. 6.1.3. Mentor: Design Not Just for Usability, but Learnability
  17. html表格里面怎么合并单元格的快捷键,excel合并单元格快捷键是什么
  18. 在Netbeans中搭建Android开发环境
  19. vmware不支持linux,vmware不支持opengl
  20. acer台式电脑怎么重装系统_宏基台式电脑怎么装系统

热门文章

  1. es6 --- Promise.catch
  2. unable to execute dex: multiple dex files Cocos2dxAccelerometer
  3. OSSIM主要数据库表结构
  4. 数据挖掘开源项目立项
  5. Linux-Android 修改屏蔽长按键功能
  6. Spring+Spring Security+JSTL实现的表单登陆的例子
  7. FIFO分枝_限界算法
  8. 空间索引不能用analyze进行分析
  9. 三星要用Exynos 9芯片打造独立VR头显
  10. linux驱动中地址空间转换