當前位置:首頁 » 服務存儲 » 隊列存儲數據應遵循的原則是
擴展閱讀
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。當刪除對頭元素(即使想刪除的是隊列中的元素,也必須從隊頭開始一個個的刪除)時,只需要移動頭指針的位置就可以。

⑼ 棧和隊列的存儲方式

棧和隊列都是在一個特定范圍的存儲單元中存儲的數據,這些數據都可以重新被取出使用。不同的是,棧就象一個很窄的桶先存進去的數據只能最後才能取出來,而且隊列則不一樣,即「先進後出」。隊列有點象日常排隊買東西的人的「隊列」先牌隊的人先買,後排隊的人後買,即「先進先出」。有時在數據結構中還有可能出現按照大小排隊或按照一定條件排隊的數據隊列,這時的隊列屬於特殊隊列,就不一定按照「先進先出」的原則讀取數據了。

⑽ 錄入數據應遵循什麼原則

錄入數據應該遵循的最主要原則是真實性,科學性以及效率性,這樣才能達到更理想標準的錄入效果。