更新了链表方法的队列

This commit is contained in:
XerolySkinner
2022-11-11 03:31:59 +08:00
parent ed868c4f25
commit 0c162ac508
189 changed files with 4604 additions and 414 deletions

View File

@@ -35,13 +35,13 @@
#pragma once
#include "varint.h"
#include <stdlib.h>
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// 返回值枚举
//
/**
* @brief 队列的返回值
*/
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// 返回值枚举
//
/**
* @brief 队列的返回值
*/
enum QUEUES_RES {
QUEUES_OK, ///< 成功
QUEUES_EMPTY, ///< 队列是空的
@@ -79,4 +79,45 @@ private:
u8* dat; // 数据头
};
//////////////////////////////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------------------------------
// 类目
/**
* @brief 链表方式队列的节点
*/
struct _lQueue {
struct _lQueue* back; ///< 后一个节点的指针
void* dat; ///< 数据的指针
u32 size; ///< 该数据的大小
};
typedef struct _lQueues _lQueues;
/**
* @brief 一个队列的类
* @note 使用链表重新分配方式组织
* 队列的内存空间是非连续的,适合快速交换数据
*/
class STL_lQueue {
public:
STL_lQueue(void);
~STL_lQueue(void);
public:
u8 push(void*& var, u32 size);
u8 pop(void);
u8 top(void*& var, u32& size);
u8 push8(u8 var);
u8 top8(u8& var);
u8 poptop8(void);
u8 push32(u32 var);
u8 top32(u32& var);
u32 poptop32(void);
u8 pushfun(void(*fun)(void));
void (*poptopfun(void))(void);
private:
u32 mem; // 已有成员
_lQueue* Hdat; // 队列进入
_lQueue* Tdat; // 队列弹出
};
//////////////////////////////////////////////////////////////////////////////////////////////////////
#endif