#include
#include
typedef struct lnode
int data;
struct lnode *next;
}linklist;
typedef struct
linklist *front;
linklist *rear;
}linkqueue;
int inqueue(linkqueue *lq)
linklist *p=(linklist*)malloc(sizeof(linklist));
if(p==null)
printf("初始化失敗
!\n");
return 0;
p->next=null;
lq->front=lq->rear=p;
return 1;
int emptyqueue(linkqueue *lq)
if(lq->front==lq->rear)
printf("佇列空
!\n");
return 1;
return 0;
int enqueue(linkqueue *lq, int x)
linklist *s=(linklist *)malloc(sizeof(linklist));
if(s==null)
printf("分配空間失敗
!\n");
return 0;
s->data=x;
s->next=null;
lq->rear->next=s;
lq->rear=s;
return 1;
int getfront(linkqueue *lq, int *x)
if(emptyqueue(lq))
printf("隊空
!\n");
return 0;
*x=lq->front->next->data;
return 1;
int outqueue(linkqueue *lq, int *x)
linklist *p;
if(emptyqueue(lq))
printf("隊空
!\n");
return 0;
p=lq->front->next;
*x=p->data;
lq->front->next=p->next;
if(lq->front->next==null)
lq->rear=lq->front;
free(p);
return 1;
int main()
linkqueue *q;
q=(linkqueue *)malloc(sizeof(linkqueue));
linklist *p;
int n,m,x,fx;
inqueue(q);
printf("請輸入入隊元素個數
n:\n");
scanf("%d",&n);
printf("請輸入入隊元素:
\n");
for(int i=1; i<=n; i++)
scanf("%d",&m);
enqueue(q, m);
getfront(q, &fx);
printf("隊首元素
:%d\n", fx);
printf("輸出佇列元素
:\n");
for(p=q->front->next; p!=null; p=p->next)
printf("%3d", p->data);
for(int i=1; i<=n; i++)
outqueue(q, &x);
printf("\n出隊元素
:%d\n", x);
system("pause");
return 0;
執行結果:
鏈佇列的入隊 出隊
test demo.cpp 定義控制台應用程式的入口點。include stdafx.h include stdio.h include windows.h define queuesize 100 假定預分配的佇列空間最多為100個元素 typedef char datatype 假定佇列元素的資...
鏈佇列的儲存和入隊出隊操作
今天看圖的廣度優先遍歷的時候,發現用到了佇列,補一下鏈佇列的知識,參考 大話資料結構 的p118 120,自己寫了乙個簡單的測試例子便於理解。理解起來並不難,用的是單鏈表結構。front指向鍊錶的頭結點 是虛結點,它的next指向第乙個節點 rear指向鍊錶的尾節點。下面舉個簡單的例子,實現鏈佇列的...
佇列的入隊 出隊操作
程式設計實現佇列的入隊 出隊操作 先進先出 include using namespace std node表示佇列中每個節點元素 typedef struct node node queue表示佇列 typedef struct queue queue 建立空佇列 queue createqueu...