您好,登錄后才能下訂單哦!
由于線性存儲結構有順序存儲和鏈式存儲兩種,而隊列是一種特殊的線性結構,所以,隊列自然也會有鏈式存儲結構,這種存儲結構,稱之為“鏈隊列”。只不過,這種結構需要兩個指針,一個指針指向隊列的頭部,一個指針指向隊列的尾部。雖然隊列采用了鏈式存儲這種方式,但是它本質上仍然是隊列,因此,只要是隊列,就要遵循:只允許在隊列的頭部進行刪除操作,只允許在隊里的尾部進行插入操作。那么,先來定義個鏈隊列結構:
typedef int QElemType; typedef struct QNode{ QElemType data; struct QNode *next; }QNode, *QueuePtr; typedef struct{ QueuePtr front, rear; }LinkQueue;
有了隊列這種結構后,就可以進行隊列元素的插入操作了。
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; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。