更新了链表方法的队列
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user