zl程序教程

您现在的位置是:首页 >  大数据

当前栏目

【数据结构4】队列

2023-09-27 14:26:36 时间
队列(Queue):限定仅允许在表中的一端进行插入,而在表中的另一端进行删除的线性表,简称队。

队列(Queue):限定仅允许在表中的一端进行插入,而在表中的另一端进行删除的线性表,简称队。向队列插入元素称为入队,向队列删除元素称为出队。基操作的特征是先进先出,故又称为FIFO(First In First Out)的线性表。


队尾指针进1:Q.rear = (Q.rear+1)%MaxSize; 队列长度,元素个数:(Q.rear+MaxSize-Q.front)%MaxSize; 队空条件:Q.rear == Q.front 队满条件:(Q.rear+1)%MaxSize == Q.front 2-1-1 (循环)顺序队列的存储结构
#define MaxSize 50

typedef struct {

 ElemType data[MaxSize];

 int front, rear;

}SqQueue;

SqQueue Q;

https://github.com/skywind3000/kcp/blob/master/ikcp.h


//=====================================================================

// QUEUE DEFINITION 

//=====================================================================

#ifndef __IQUEUE_DEF__

#define __IQUEUE_DEF__

struct IQUEUEHEAD {

 struct IQUEUEHEAD *next, *prev;

typedef struct IQUEUEHEAD iqueue_head;


//--------------------------------------------------------------------- #define IQUEUE_HEAD_INIT(name) { (name), (name) } #define IQUEUE_HEAD(name) \ struct IQUEUEHEAD name = IQUEUE_HEAD_INIT(name) #define IQUEUE_INIT(ptr) ( \ (ptr)- next = (ptr), (ptr)- prev = (ptr)) #define IOFFSETOF(TYPE, MEMBER) ((size_t) ((TYPE *)0)- MEMBER) #define ICONTAINEROF(ptr, type, member) ( \ (type*)( ((char*)((type*)ptr)) - IOFFSETOF(type, member)) ) #define IQUEUE_ENTRY(ptr, type, member) ICONTAINEROF(ptr, type, member)
//--------------------------------------------------------------------- // queue operation //--------------------------------------------------------------------- #define IQUEUE_ADD(node, head) ( \ (node)- prev = (head), (node)- next = (head)- next, \ (head)- next- prev = (node), (head)- next = (node)) #define IQUEUE_ADD_TAIL(node, head) ( \ (node)- prev = (head)- prev, (node)- next = (head), \ (head)- prev- next = (node), (head)- prev = (node)) #define IQUEUE_DEL_BETWEEN(p, n) ((n)- prev = (p), (p)- next = (n)) #define IQUEUE_DEL(entry) (\ (entry)- next- prev = (entry)- prev, \ (entry)- prev- next = (entry)- next, \ (entry)- next = 0, (entry)- prev = 0) #define IQUEUE_DEL_INIT(entry) do { \ IQUEUE_DEL(entry); IQUEUE_INIT(entry); } while (0) #define IQUEUE_IS_EMPTY(entry) ((entry) == (entry)- next) #define iqueue_init IQUEUE_INIT #define iqueue_entry IQUEUE_ENTRY #define iqueue_add IQUEUE_ADD #define iqueue_add_tail IQUEUE_ADD_TAIL #define iqueue_del IQUEUE_DEL #define iqueue_del_init IQUEUE_DEL_INIT #define iqueue_is_empty IQUEUE_IS_EMPTY #define IQUEUE_FOREACH(iterator, head, TYPE, MEMBER) \ for ((iterator) = iqueue_entry((head)- next, TYPE, MEMBER); \ ((iterator)- MEMBER) != (head); \ (iterator) = iqueue_entry((iterator)- MEMBER.next, TYPE, MEMBER)) #define iqueue_foreach(iterator, head, TYPE, MEMBER) \ IQUEUE_FOREACH(iterator, head, TYPE, MEMBER) #define iqueue_foreach_entry(pos, head) \ for( (pos) = (head)- next; (pos) != (head) ; (pos) = (pos)- next )
#define __iqueue_splice(list, head) do { \ iqueue_head *first = (list)- next, *last = (list)- prev; \ iqueue_head *at = (head)- next; \ (first)- prev = (head), (head)- next = (first); \ (last)- next = (at), (at)- prev = (last); } while (0) #define iqueue_splice(list, head) do { \ if (!iqueue_is_empty(list)) __iqueue_splice(list, head); } while (0) #define iqueue_splice_init(list, head) do { \ iqueue_splice(list, head); iqueue_init(list); } while (0)

大数据开发基础的数据结构和算法的数据结构的队列 当谈到大数据开发基础的数据结构和算法时,队列是不可避免的一个主题。队列是一种特殊的线性数据结构,它遵循先进先出(FIFO)的原则。在实际应用中,队列通常用于模拟传输、排队等场景。
【数据结构】用栈实现队列 比如如果栈里有5个数据,而要根据队列的特性,出队列肯定出的是队头数据,也就是1,而在栈里,怎么才能将数据1删除掉呢?
【数据结构】队列的实现 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)的特点。
Java数据结构之队列 队列是一个有序列表,可以用数组或是链表来实现。 遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出
Qz学算法-数据结构篇(稀疏数组、队列) 数据结构包括:线性结构和非线性结构。所以博主会通过这两个角度来对线性结构和非线性结构进行梳理归纳。本篇是稀疏数组和队列
wu_being 上海市 华东师范大学 软件工程 (非全日制硕士研究生) 网名:Wu_Being,吴兵 代码:!1