用鍊錶實現佇列的基本操作, 定義兩個指標, 分別指向鍊錶的頭結點和尾節點, 即作為佇列的頭和尾, 在隊尾進行插入操作, 在對頭進行出隊操作
定義乙個鏈佇列
//定義乙個佇列
typedef
int elemtype;
//鍊錶的定義
typedef
struct qnode qnode,
*queueptr;
//隊頭和隊尾指標的定義
typedef
struct
linkqueue;
初始化鏈佇列
//佇列的初始化
void
initqueue
(linkqueue* l)
l->rear = l->front;
l->front->next =
null
;}
鏈佇列的入隊操作
//入佇列操作
intinqueue
(linkqueue* l, elemtype e)
p->data = e;
//從隊尾入隊, 其下乙個結點為null
p->next =
null
;//連線佇列
l->rear->next = p;
//調整隊尾指標, 使其始終指向隊尾
l->rear = p;
return1;
}
鏈佇列的出隊操作
//出佇列操作
intoutqueue
(linkqueue* l,
int* e)
//定義乙個調整指標來儲存被釋放的結點, 即隊頭的下乙個元素
queueptr adjust = l->front->next;
//儲存要出隊的值
*e = adjust->data;
//如果出隊後隊列為空, 調整尾指標
if(l->rear == l->front->next)
//連線佇列
l->front->next = adjust->next;
free
(adjust)
;return1;
}
佇列的銷毀
void
destroyqueue
(linkqueue* l)
//銷毀後, 隊頭和隊尾指標都為null
}
佇列的清空
//清空乙個佇列
void
clearqueue
(linkqueue* l)
//隊列為空時, 調整隊尾指標
l->rear = l->front;
}
測試
#include
#include
/* 用動態鍊錶實現乙個鏈佇列
*///定義乙個佇列
typedef
int elemtype;
//鍊錶的定義
typedef
struct qnode qnode,
*queueptr;
//隊頭和隊尾指標的定義
typedef
struct
linkqueue;
//佇列的初始化
void
initqueue
(linkqueue* l)
l->rear = l->front;
l->front->next =
null;}
//入佇列操作
intinqueue
(linkqueue* l, elemtype e)
p->data = e;
//從隊尾入隊, 其下乙個結點為null
p->next =
null
;//連線佇列
l->rear->next = p;
//調整隊尾指標, 使其始終指向隊尾
l->rear = p;
return1;
}//出佇列操作
intoutqueue
(linkqueue* l,
int* e)
//定義乙個調整指標來儲存被釋放的結點, 即隊頭的下乙個元素
queueptr adjust = l->front->next;
//儲存要出隊的值
*e = adjust->data;
//如果出隊後隊列為空, 調整尾指標
if(l->rear == l->front->next)
//連線佇列
l->front->next = adjust->next;
free
(adjust)
;return1;
}void
destroyqueue
(linkqueue* l)
//銷毀後, 隊頭和隊尾指標都為null
}//清空乙個佇列
void
clearqueue
(linkqueue* l)
//隊列為空時, 調整隊尾指標
l->rear = l->front;
}int
main()
int e =0;
for(
int i =
0; i <5;
++i)
}printf
("\n");
destroyqueue
(&l1);if
(!l1.front)
system
("pause");
return0;
}
效果圖
C語言鏈佇列的基本操作
鏈佇列的初始化及入隊出隊操作,xp3 vc6.0 執行下通過。define overflow 2 define error 0 include typedef int qelemtype typedef struct qnode qnode,queueptr typedef struct linkq...
鏈佇列的基本操作(C語言)
佇列的特點就是先進先出,鏈佇列就是用鍊錶生成的佇列,它的特殊之處就是有頭尾標誌 front和rear 且front作為頭節點,rear是儲存資料的節點,佇列沒有尾節點。include include typedef int elemtype typedef struct queuenode qn t...
鏈佇列的基本操作 C
include using namespace std 定義結點 typedef struct qnode qnode,queueptr 定義鏈隊 struct lqueue 初始化佇列 void init lqueue q 入佇列 void enqueue lqueue q 判斷佇列是否為空 bo...