由于線性存儲結(jié)構(gòu)有順序存儲和鏈?zhǔn)酱鎯煞N,而隊列是一種特殊的線性結(jié)構(gòu),所以,隊列自然也會有鏈?zhǔn)酱鎯Y(jié)構(gòu),這種存儲結(jié)構(gòu),稱之為“鏈隊列”。只不過,這種結(jié)構(gòu)需要兩個指針,一個指針指向隊列的頭部,一個指針指向隊列的尾部。雖然隊列采用了鏈?zhǔn)酱鎯@種方式,但是它本質(zhì)上仍然是隊列,因此,只要是隊列,就要遵循:只允許在隊列的頭部進(jìn)行刪除操作,只允許在隊里的尾部進(jìn)行插入操作。那么,先來定義個鏈隊列結(jié)構(gòu):
專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)濮陽縣免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。typedef int QElemType; typedef struct QNode{ QElemType data; struct QNode *next; }QNode, *QueuePtr; typedef struct{ QueuePtr front, rear; }LinkQueue;
有了隊列這種結(jié)構(gòu)后,就可以進(jìn)行隊列元素的插入操作了。
Status EnQueue ( LinkQueue *Q, QElemType e ){ QueuePtr s = ( QueuePtr ) malloc ( sizeof ( struct QNode ) ); if ( !s ) exit ( OVERFLOW ); s->data = e; s->next = NULL; Q->rear->next = s; Q->rear = s; return OK; }
同樣的,元素的刪除操作。
Status DeQueue ( LinkQueue *Q, QElemType *e ){ QueuePtr p; if ( Q->front == Q->rear ) return ERROR; p = Q->front->next; *e = p->data; Q->front->next = p->next; if ( Q->rear == p ) Q->rear = Q->front; free ( p ); return OK; }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。