当前位置:首页 » 服务存储 » 队列存储数据应遵循的原则是
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

队列存储数据应遵循的原则是

发布时间: 2022-01-18 02:45:40

⑴ 编写程序,定义队列类模板,遵循“先进先出”数据操作原则

///////////////////////////////////////////////////////////////////////////////
#define define_Type template<class VUALESTYPE>
#define data_Type VUALESTYPE
//*/////////////////////////////////////////////////////////////////////////////
//**节点************************************************************************
//*/////////////////////////////////////////////////////////////////////////////
///栈、队列节点结构体
define_Type
class _node
{
public:
data_Type m_data;//数据类型
_node *next;//下一个节点指针
};

#define CNode _node<data_Type>
#define LPCNode _node<data_Type> *
////////////////////////////////////////
//*///////////////////////////////////////////////////////////////////////////////////////////////////////
/*

类定义部分。

*/
//*////////////////////////////////////////////////////////////////////////////////////////////////////////
//*/////////////////////////////////////////////////////////////////////////////
//****队列********************************************************************
//*/////////////////////////////////////////////////////////////////////////////
define_Type
class CQueueUserDefine
{
LPCNode rear_queue_node;//队尾
long queue_size;
long current_node;

public:
CQueueUserDefine(void);
virtual ~CQueueUserDefine(void);

data_Type PopQueue(data_Type *desData = NULL);
bool PushQueue(const data_Type new_data);
void *GetTop() const ;
long GetQueueSize() const ;
data_Type GetQueueHead() ;
data_Type GetQueueRear() const ;
data_Type GetNextQueueNode() ;
data_Type GetQueueNodeData(const long current_node) ;

private :
bool Empty() const ;
void *MallocMem();
bool FreeMem(void *memory) const ;
void *GetSecondHeadNode(void);
};

//*///////////////////////////////////////////////////////////////////////////////////////////////////////
//****队列************************************************************************************************
//*////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
define_Type
CQueueUserDefine<data_Type>::CQueueUserDefine()
{
queue_size = current_node = 0;
rear_queue_node = NULL;
}

define_Type
CQueueUserDefine<data_Type>::~CQueueUserDefine()
{
while (!Empty())
{
PopQueue();
}
}

////////////////////////////////////////////////////////
/*
作用:判断是否为空。
*/
////////////////////////////////////////////////////////
define_Type
bool CQueueUserDefine<data_Type>::Empty(void) const
{
if (rear_queue_node == NULL || queue_size <= 0)
return true;
return false;
}

////////////////////////////////////////////////////////
/*
作用:分配内存。
*/
////////////////////////////////////////////////////////
define_Type
void *CQueueUserDefine<data_Type>::MallocMem()
{
CNode *temp_struct = (LPCNode)malloc(sizeof(CNode));
temp_struct->next = NULL;

return (void*)temp_struct;
}

////////////////////////////////////////////////////////
/*
作用:释放内存。
*/
////////////////////////////////////////////////////////
define_Type
bool CQueueUserDefine<data_Type>::FreeMem(void *memory) const
{
free(memory);
return true;
}

////////////////////////////////////////////////////////
/*
作用:得到倒数第二个头节点的指针 。
*/
////////////////////////////////////////////////////////
define_Type
void *CQueueUserDefine<data_Type>::GetSecondHeadNode(void)
{
if (!Empty())
{
LPCNode temp_data = rear_queue_node;
LPCNode temp_data_temp = rear_queue_node;

while (rear_queue_node->next != NULL && !Empty())
{
temp_data_temp = rear_queue_node;
rear_queue_node = rear_queue_node->next;
}

rear_queue_node = temp_data;

return (void *)(temp_data_temp);
}
return NULL;
}

////////////////////////////////////////////////////////
/*
作用:出队列。
*/
////////////////////////////////////////////////////////
define_Type
data_Type CQueueUserDefine<data_Type>::PopQueue(data_Type *desData)
{
if (!Empty())
{
LPCNode temp_data = (LPCNode)GetSecondHeadNode();
LPCNode temp = temp_data;

if (temp_data == NULL) return NULL;
{
if (temp_data->next != NULL)
temp_data = temp_data->next;
if (desData != NULL)
{
ZeroMemory((void*)desData,sizeof (desData));
memcpy((void*)desData,(void *)(&(temp_data->m_data)),sizeof (temp_data->m_data));
}
}

LPCNode temp_data_temp = rear_queue_node;
while (rear_queue_node != temp_data && !Empty())
rear_queue_node = rear_queue_node->next;
FreeMem(rear_queue_node);
if (temp != temp_data) temp->next = NULL;
else temp_data_temp = NULL;
rear_queue_node = NULL;
rear_queue_node = temp_data_temp;

queue_size--;
if (desData != NULL)
return *desData;
}
return NULL;
}

/////////////////////////////////////////////////////////////////////////
/*
作用:入队列。
*/
/////////////////////////////////////////////////////////////////////////
define_Type
bool CQueueUserDefine<data_Type>::PushQueue(const data_Type new_data)
{
LPCNode node_temp = (LPCNode)MallocMem();
if (memcpy((void*)(&(node_temp->m_data)),(void *)(&new_data),sizeof (new_data)) != NULL)
{
node_temp->next = rear_queue_node;
rear_queue_node = node_temp;
queue_size++;

return true;
}
return false;
}

/////////////////////////////////////////////////////////////////////////
/*
作用:得到队列长度。
*/
/////////////////////////////////////////////////////////////////////////
define_Type
long CQueueUserDefine<data_Type>::GetQueueSize() const
{
return size_stack;
}

/////////////////////////////////////////////////////////////////////////
/*
作用:得到队列头。
*/
/////////////////////////////////////////////////////////////////////////
define_Type
data_Type CQueueUserDefine<data_Type>::GetQueueHead()
{
LPCNode temp_data = (LPCNode)GetSecondHeadNode();
if (temp_data->next != NULL) return temp_data->next->m_data;
else return temp_data->m_data;
}

/////////////////////////////////////////////////////////////////////////
/*
作用:得到队列尾。
*/
/////////////////////////////////////////////////////////////////////////
define_Type
data_Type CQueueUserDefine<data_Type>::GetQueueRear() const
{
return rear_queue_node->m_data;
}

/////////////////////////////////////////////////////////////////////////
/*
作用:遍历队列。
*/
/////////////////////////////////////////////////////////////////////////
define_Type
data_Type CQueueUserDefine<data_Type>::GetNextQueueNode()
{
return GetQueueNodeData(current_node ++ );
}

/////////////////////////////////////////////////////////////////////////
/*
作用:遍历队列。
*/
/////////////////////////////////////////////////////////////////////////
define_Type
data_Type CQueueUserDefine<data_Type>::GetQueueNodeData(const long current_node_temp)
{
long _current = 0;
LPCNode temp_node = rear_queue_node;
LPCNode temp = NULL;

current_node = current_node_temp;
if (current_node_temp > queue_size) current_node = 1;

while (current_node > ++_current
&& rear_queue_node != NULL)
rear_queue_node = rear_queue_node->next;
temp = rear_queue_node;
rear_queue_node = temp_node;

current_node = _current+1;
if (current_node > queue_size) current_node = 1;

if (temp != NULL)
return temp->m_data;
return rear_queue_node->m_data;
}

这些函数实现只能在.h文件内……

⑵ 队列中存取数据元素的原则是A.先进先出B.后进先出C.先进后出D.随意进出

BC都是栈的原则,队列是先进先出。就像一条路,有一个入口和一个出口。先进去的就可以先出去。而栈就像一个箱子,后放的在上边,所以后进先出。。

⑶ 若一个数据表中已经有存储数据,修改表结构时应遵循的原则是什么

那你就要确认你这个数据表中哪些数据有用无用,遵循安全性原则,数据完整性。人家数据有用你不能把人家的数据乱改。根据表的属性值改

⑷ 队列和栈是怎样的线性表其运算遵循怎样的原则

这句话是对的。栈和队列是两种限定性的数据结构,它们限定了插入和删除数据元素的位置,在表的两端进行。
栈(stack)是限定只能在表的一端进行插入和删除操作的线性表。
队列(queue)是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。

⑸ 使用堆栈存取数据,须遵循( )和( )的原则。

它必须遵从“先进后出”,或称“后进先出”的原则,不能无顺序随意存取。

⑹ 数据分片应遵守哪些基本原则数据分片有哪些基本类型和方法

链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。
分片(sharding)是数据库分区的一种,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片。碎片这个词意思就是整体的一小部分。
Jason Tee表示:“简言之,分片(sharding)数据库需要将数据库(database)分成多个没有共同点的小型数据库,且它们可以跨多台服务器传播。”
技术上来说,分片(sharding)是水平分区的同义词。在实际操作中,这个术语常用来表示让一个大型数据库更易于管理的所有数据库分区。
分片(sharding)的核心理念基于一个想法:数据库大小以及数据库上每单元时间内的交易数呈线型增长,查询数据库的响应时间(response time)以指数方式增长。
另外,在一个地方创建和维护一个大型数据库的成本会成指数增长,因为数据库将需要高端的计算机。相反地,数据碎片可以分布到大量便宜得多的商用服务器上。就硬件和软件要求而言,数据碎片相对来说没什么限制。
在某些情况中,数据库分片(sharding)可以很简单地完成。按地理位置拆分用户数据库就是一个常见的例子。位于东海岸的用户被分到一台服务器上,在西海岸的用户被分在另一台服务器上。假设没有用户有多个地理位置,这种分区很易于维护和创建规则。
但是数据分片(sharding)在某些情况下会是更为复杂的过程。例如,一个数据库持有很少结构化数据,分片它就可能非常复杂,并且结果碎片可能会很难维护。
分片过程
对于发送端发送的每份IP数据报来说,其标识字段都包含一个唯一值。该值在数据报分片时被复制到每个片中。标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每个组成数据报的片都要把该比特置1。片偏移字段指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
最后,标志字段中有一个比特称作“不分片”位。如果将这一比特置1,IP将不对数据报进行分片。相反把数据报丢弃并发送一个ICMP差错报文给起始端。
当IP数据报被分片后,每一片都成为一个分组,具有自己的IP首部,并在选择路由时与其他分组独立。这样,当数据报的这些片到达目的端时有可能会失序,但是在IP首部中有足够的信息让接收端能正确组装这些数据报片。

⑺ 仓储管理应遵循的原则有哪些

一、先进先出原则(FIFO)。先入库存放的物料,配发物料时优先出库,减少仓储物料质量风险,提高物料使用价值。
二、锁定库位原则。某物料固定摆在某库位,实物所放库位必须有与ERP系统中的一致。库位编码就像一个人的家庭地址一样重要,没有有固定库位,就无法快速地找到相关物料。
三、专料专用原则,不得随意挪用对应订单物料。
四、库存的ABC管理原则:
A类物料的数量可能只占库存的10~15%,但货值可占库存价值的60~70%;
B类物料的数量可能只占库存的20~35%,但货值可占库存价值的15~20%;
C类物料的数量可能占库存的50~70%,但货值可能占库存价值的5~10%。
因此要严格控制关键的少数和次要的多数,也就是要严格控制好A、B两类。
五、“六不入”原则:
1、有送货单而没有实物的不能办入库手续;
2、有实物而没有送货单或发票原件的不能办入库手续;
3、来料与送货单数量、规格、型号不同的不能办入库手续;
4、IQC检验不通过的,且没有领导签字同意使用的,不能办入库手续;
5、没办入库而先领用的,不能办入库手续;
6、送货单或发票不是原件的不能办入库手续。
六、“五不发”原则:
1、没有提料单的,或提料单是无效的,不能发放物料;
2、手续不符合要求的,不能发放物料;
3、质量不合格的物料,除非有领导批示同意使用,否则不能发放;
4、规格不对、配件不齐的物料,不能发放;
5、未办理入库手续的物料,不能发放。
七、一次出库原则:
物料出库必须准确、及时及一次性完成,生产线领用物料必须要拉回自己生产线所属位置,不能再堆放在仓库的范围,以免造成混乱和差错。
八、门禁原则:
1、除物料管理人员和搬运人员因工作需要,其他人员未经批准,一律不得进入仓库;
2、严禁任何人在进出仓库时私自携带物料;
3、有来宾视察时,须在主管级以上人员陪同下方可进入仓库。
九、“日事日毕、日清日高”原则:
1、每个仓管员在每日工作结束时,进行当天的相关账物的自我确认和核查,确保账目的平衡,找出不足,及时改进,第二天才可进步提高。
2、每日对所管的物料库位至少巡查1~2次,保证在库物料的品质、安全和6S状态达标,确保物料有正确标识,该退的要退给供应商或放入退货区,以免产生呆滞。
3、仓管员当日的单据当日必须传给录单员,而录单员当日的单据必须在当日录入系统。
十、以旧换新原则:对有规定的物料,严格执行退旧才能换新、领新必先退旧的原则

⑻ 队列中存取数据元素的原则是A.先进先出 B.后进先出 C.先进后出 D.随意进出

先进先出。

队列是先进先出的线性表。队列和栈一样,在实际程序的算法设计和计算机一些其他分支里,都有很多重要的应用,比如计算机操作系统对进程或作业的优先级调度算法,对离散事件的模拟算法,还有计算机主机和外部设备运行速度不匹配的问题解决等。

(8)队列存储数据应遵循的原则是扩展阅读:

注意事项:

使用顺序存储结构表示队列时,首先申请足够大的内存空间建立一个数组,除此之外,为了满足队列从队尾存入数据元素,从队头删除数据元素,还需要定义两个指针分别作为头指针和尾指针。

当有数据元素进入队列时,将数据元素存放到队尾指针指向的位置,然后队尾指针增加 1。当删除对头元素(即使想删除的是队列中的元素,也必须从队头开始一个个的删除)时,只需要移动头指针的位置就可以。

⑼ 栈和队列的存储方式

栈和队列都是在一个特定范围的存储单元中存储的数据,这些数据都可以重新被取出使用。不同的是,栈就象一个很窄的桶先存进去的数据只能最后才能取出来,而且队列则不一样,即“先进后出”。队列有点象日常排队买东西的人的“队列”先牌队的人先买,后排队的人后买,即“先进先出”。有时在数据结构中还有可能出现按照大小排队或按照一定条件排队的数据队列,这时的队列属于特殊队列,就不一定按照“先进先出”的原则读取数据了。

⑽ 录入数据应遵循什么原则

录入数据应该遵循的最主要原则是真实性,科学性以及效率性,这样才能达到更理想标准的录入效果。