链式队列的实现(头文件及源程序)
链式队列的实现(头文件及源程序)
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个简单的c语言链式队列代码实现
1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似, 例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...
- 【数据结构】链式队列的实现(C语言)
队列的链式存储称为链式队列.链式队列就是一个特殊的单链表,对于这种特殊的单链表,它的插入和删除操作规定在单链表的不同端进行.链式队列的队首和队尾指针分别用front和rear表示. 链式队列要掌握以下 ...
- (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
http://blog.csdn.net/fisherwan/article/details/20055179 首先要感谢这位大牛的一篇博客,地址如下:http://blog.csdn.net/hgu ...
- 数据结构之顺序队列和链式队列常用的一些操作
顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表.和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素.由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示 ...
- 数据结构上机实践第七周项目2 - 自建算法库——链队(链式队列)
自建算法库--链队(链式队列) 实现源代码如下: 1.liqueue.h /* copyright (t) 2016,烟台大学计算机学院 *All rights reserved. *文件工程名称:1 ...
- 刁肥宅手笔:纯C语言实现链式队列的相关操作
先上图,以图服人: 图一 程序运行截图1 图二 程序运行截图2 上代码: 头文件LinkQueue.h: /*LinkQueue.h*/#ifndef LINKQUEUE_H_INCLUDED #de ...
- 链式队列,队列篇(链式队列的出队入队操作)
数据结构,队列篇(链式队列) 前言: 上一篇博主简单讲解了顺序队列和循环队列,今天讲解队列最后一篇链式队,链式队在数据结构中用到比较多,用来做一些排队的算法,还有链式队列是也是和链式栈一样采用链表的方 ...
- c语言建立队列(顺序队列、循化队列和链式队列)
c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...
- c语言队列(顺序队列,循环队列,链式队列)
顺序队列 1.初始化: front=-1; rear=-1; 2.判空条件 font=rear; 3.队列已满条件 rear=max-1; 代码: #include<stdio.h> #i ...
最新文章
- 超实用的58个office快捷键汇总,办公室人员必备!
- shared_ptr 用法
- Windows核心编程 第十九章 DLL基础
- c++申请内存空间_有没有想过:malloc分配的内存空间地址连续吗
- java八种排序算法---直接插入排序
- Android工程中追踪修改bug的总结
- 动态规划法(五)钢条切割问题(rod cutting problem)
- 随想录(我熟知的几个实时操作系统)
- c++类中的static详解(续)
- 「CSDN 2020年度博客之星」总榜单在此揭晓
- Vue中computed 计算机属性、getter、setter
- 【胸片分割】基于matlab GUI最小误差法胸片分割系统【含Matlab源码 1065期】
- 基础集合论 第一章 3 集合论的公式和条件
- c语言二级选择题APP,C语言二级题库
- 简易中控紫猫插件版(1)
- 6.1.3. Mentor: Design Not Just for Usability, but Learnability
- html表格里面怎么合并单元格的快捷键,excel合并单元格快捷键是什么
- 在Netbeans中搭建Android开发环境
- vmware不支持linux,vmware不支持opengl
- acer台式电脑怎么重装系统_宏基台式电脑怎么装系统