FIFO队列 ADT接口 链表实现】的更多相关文章

FIFO.h (接口) #include "Item.h" void QUEUinit(int); int QUEUempty(void); void QUEUput(Item); Item QUEUget(void); Item.h (自定义类型) typedef char Item; FIFO.c (接口实现) #include "FIFO.h" #include <stdlib.h> typedef struct STACKnode *link;…
Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" typedef struct DEQUEUEnode *link; struct DEQUEUEnode { Item item; link next; link last; }; void DEQUEUEinit(int); void DEQUEUEerror(void); Item DEQUEUEheadget(void); Item DEQUEUE…
FIFO.h (接口) #include "Item.h" #include <stdlib.h> typedef struct STACKnode *link; struct STACKnode { Item item; link next; }; void QUEUEinit(int); int QUEUEempty(void); void QUEUEput(Item); Item QUEUEget(void); void QUEUEerror(void); Item.…
Random queue ADT接口 RANDOM.h #include <stdlib.h> #include "Item.h" #include <time.h> #include <stdbool.h> void RANDOMQUEUEtailput(int); void RANDOMQUEUEinit(int); bool RANDOMQUEUEisFull(void); bool RANDOMQUEUEisEmpty(void); stat…
Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" void DEQUEUEinit(int); void DEQUEUEerror(void); Item DEQUEUEheadget(void); Item DEQUEUEtailget(void); void DEQUEUEheadput(Item); void DEQUEUEtailput(Item); int DEQUEUEisEmpty(voi…
LIFO 链栈结构 typedef int ElemType; struct node{ ElemType data; struct node* next; }; typedef struct node* Stack; LIFO 链栈基本操作 //LIFO 链栈初始化 void InitStack(Stack top){ top = NULL; } //LIFO 链栈判断栈空 boolean StackKEmpty(Stack top){ if(top == NULL) return true;…
什么是抽象数据类型?首先,这一概念是软件开发人员在力求编写的代码健壮.易维护且可以复用的过程中产生的.英文是AbstractData Type.有人将其比作"抽象"的墙壁,"它将接口和实现明确分开,所以用户只看到接口,因此不需要参与实现."构建者则着力实现ADT接口.ADT成为了双方的契约,这使得代码更容易维护. 接口:接口是把公共的方法和属性组合起来以封装特定功能的一个集合. 创建linked list.h头文件 #ifndef LIST_H_ #define L…
3.6 栈 ADT 栈是限制插入和删除只能在一个位置上进行的表,叫做栈的顶部.对栈的基本操作有进栈和出栈,进栈在顶部插入元素,出栈删除最后插入的元素. 栈是一个表,因此任何实现表的方法都能实现栈.显然 ArrayList 和 LinkedList 都支持栈操作:因为栈操作是常数时间操作,除非在非常特殊的情形下,不能产生明显改进. 栈的链表实现 在表的顶端或末端插入来实现进栈,删除顶端或末端实现出栈. 栈的数组实现 在表的末端插入实现进栈,删除末端实现出栈. 栈的应用 平衡符号 编译器检查程序语法…
<?php /** * Filefifo.php 文件型FIFO队列 */ class Filefifo { /** * $_file_data, 数据文件的路径 */ private $_file_data = ''; /** * $_file_idx, 索引文件的路径 */ private $_file_idx = ''; /** * $_file_idx_bak, 索引备份文件的路径, 防止意外断电等导致索引文件破坏 */ private $_file_idx_bak = ''; /**…
1.阻塞队列的原理 阻塞队列与普通队列的区别在于:阻塞队列为空时,从队列中获取元素的操作将会被阻塞,当队列为满时,往队列里添加元素的操作会被阻塞. 试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素.同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得空闲起来 2.阻塞队列的简单实现 /** * 基于链表实现的一个阻塞队列 * * @author jade * */ public class BlockingQueue { pr…