使用雙向鍊錶
#include//佇列結點的結構
typedef struct
_qnodeqnode;
//佇列
typedef struct
_queue queue;
//初始化,注意這裡使用一級指標
void initqueue(queue *q)
//入隊
void enqueue(queue *q, int
val)
//設定新結點值
temp->data =val;
//在舊煉表頭結點前插入新結點,使新結點成為煉表頭結點
temp->next = q->head;
q->head->prior =temp;
q->head =temp;}//
出隊, 從鍊錶
int dequeue(queue *q)
t = q->tail;
q->tail = q->tail->prior; //
指向倒數第二個結點
q->tail->next =null;
val = t->data;
free
(t);
return
val;
}void printq(qnode *q)
}
執行如下
$ ./queue 567
資料結構 C 實現之佇列結構
佇列本質上是特殊的線性表,它是在一端 隊頭 進行刪除操作,另一端 隊尾 進行插入操作,遵守先進先出規則 fifo 既然佇列也是線性表,當然也有兩種資料儲存方式 順序儲存結構,這種結構事先要基本確定佇列的大小,不支援動態分配儲存空間,所以插入和刪除元素比較省時,但是會造成空間的浪費。為了節省空間,後來...
資料結構(C實現) 鏈佇列
鏈佇列,即佇列的鏈式儲存結構,它是僅在表頭刪除和表尾插入的單鏈表,因此乙個鏈佇列需要設定兩個分別指示隊頭元素和隊尾元素的指標,為了操作方便,給鏈佇列新增乙個頭結點,並令隊頭指標指向頭結點,由此,空的鏈佇列的判斷條件就是隊頭指標和隊尾指標均指向頭結點。鏈佇列型別描述 typedef int qelem...
資料結構之佇列 C 實現
佇列很重要的一點就是入隊在隊尾進行,出隊在隊首進行,所以又把佇列稱為先進先出表。功能實現 1.入隊功能 使用鍊錶實現 include iostream using namespace std typedef struct studentnode typedef struct linkqueue qu...