C语言链队列
链队列类似于单链表,为了限制只能从两端操作数据,其结构体内有2个指针分别指向头尾,但队列里的节点用另一种结构体来表示,头尾指针则为指向该结构体的类型。只能通过操作头尾指针来操作队列。
typedef int elemtype; typedef struct QueueNode{
elemtype date;
struct QueueNode *next;
}LinkQueueNode;
typedef struct LQueue{
LinkQueueNode *front;
LinkQueueNode *rear;
}LinkQueue;
初始化链队列
LinkQueue *init_LinkQueue(){ LinkQueueNode *node = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
LinkQueue *queue = (LinkQueue *)malloc(sizeof(LinkQueue)); //front、rear初始化时都指在头结点
if(node!=NULL && queue!=NULL){
node->next = NULL;
queue->front = node;
queue->rear = node;
return queue;
}
return NULL;
}
链队列只要有内存空间就会不溢出,判断空的条件是头尾指针相同
int Empty_LinkQueue(LinkQueue *p){ if(p->front == p->rear)
return ; return ; }
入队和出队要特别注意只能通过操作头尾指针来操作队列
int delete_LinkQueue(LinkQueue *p,elemtype *e){ if(p->front == p->rear)
return ; LinkQueueNode *node = (LinkQueueNode *)malloc(sizeof(LinkQueueNode)); node = p->front->next;
*e = node->date;
p->front = node; if(node == p->rear)
p->rear = p->front;
free(node);
return ; } int Entry_LinkQueue(LinkQueue *p,elemtype e){ LinkQueueNode *node = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(node == NULL)
return ; node->date = e;
node->next = NULL;
p->rear->next = node;
p->rear = node;
return ; }
C语言链队列的更多相关文章
- C语言实现链队列的初始化&进队&出队
/*链表实现队列的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typed ...
- C语言——循环队列和链队列的基本运算
// 循环队列#include <stdio.h> #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20 ...
- c语言描述的链队列的基本操作
#include<stdio.h> #include<stdlib.h> #define ok 0 #define error 1 //链队列特点在于不仅有链的头指针和尾指针, ...
- 数据结构 - 链队列的实行(C语言)
数据结构-链队列的实现 1 链队列的定义 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已, 我们把它简称为链队列.为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指 ...
- javascript实现数据结构与算法系列:队列 -- 链队列和循环队列实现及示例
1 队列的基本概念 队列(Queue):也是运算受限的线性表.是一种先进先出(First In First Out ,简称FIFO)的线性表.只允许在表的一端进行插入,而在另一端进行删除. 队首(fr ...
- java与数据结构(8)---java实现链队列
链队列 实际上就是单链表,只是规定了删除在队头进行,添加在队尾进行. 链队列代码结构 package list.queue; public interface Queuable<T>; p ...
- 链队列之C++实现
链队列时建立在单链表的基础之上的.由于是动态分配节点内存,所以无需判满. 链队列的形式如下: 1.队列空 2.队列存在数据 下面介绍下C++实现的链队列,VC6下调试通过. 1.文件组织 2.lq.h ...
- c/c++链队列
链队列 链队列就是简化了的单链表 nodequeue.h #ifndef __NODEQUEUE__ #define __NODEQUEUE__ #include <stdio.h> #i ...
- 【Java】 大话数据结构(7) 循环队列和链队列
本文根据<大话数据结构>一书,实现了Java版的循环队列.链队列. 队列:只允许在一端进行插入操作,而在另一端进行删除操作的线性表. 1.循环队列 队列的顺序储存结构:用数组存储队列,引入 ...
随机推荐
- models的单表操作
orm创建数据库 from django.db import models # Create your models here. class Book(models.Model): name = mo ...
- [翻译] IGLDropDownMenu
IGLDropDownMenu An iOS drop down menu with pretty animation. 一种iOS点击下拉菜单样式,动画效果很绚丽. Screenshot - 截图 ...
- [翻译] PQFCustomLoaders
PQFCustomLoaders Current version: 0.0.1 Collection of highly customizable loaders for your iOS proje ...
- java获取每月的最后一天
public static void main(String[] args) throws ParseException { // 获取当月的天数(需完善) SimpleDateFormat date ...
- Java学习---多线程的学习
基础知识 每个正在系统上运行的程序都是一个进程(process).每个进程包含一到多个线程(thread).进程也可能是整个程序或者是部分程序的动态执行. 线程是一组指令的集合,或者是程序的特殊段,它 ...
- 添加PHP扩展模块
php安装好后,可能在初次安装时,会有些模块会有遗漏,但是我们又不想重新编译php,因为耗时是比较长的.我们可不可以在不重新编译安装php的情况下,来为php单独添加某一个模块呢?查找资料,发现还是有 ...
- Exchange2016 & Skype for business 集成之一配置合作伙伴应用程序
准备条件 为Skype for Business Server和Exchange Server之间建立服务器到服务器的身份验证,您必须做两件事:1)您必须为每台服务器分配合适的证书(详细参考文档htt ...
- Design Pattern: Gof
Design Pattern: Gof 如果您学习设计模式(Design Pattern),看到Gof这个字,可不要呆呆的没有反应,Gof即Gang of four,也就是四人帮的意思,该设计模式名书 ...
- (持续更新) CSS属性持续记录
可以去除ul的li标签自带的圆点list-style-type: none; 可以将自己的光标改变样式:cursor: pointer;
- python学习day25 正则表达式
4.30-25 正则表达式与re模块 re模块本身是用来操作正则表达式,与正则本身没有关系 正则表达式是指一规则,匹配字符串的规则 1.正则表达式regex 正则表达式regex是指一规则,匹配字符串 ...