鏈佇列的基本操作 C語言

2021-09-05 12:48:42 字數 2989 閱讀 4335

用鍊錶實現佇列的基本操作, 定義兩個指標, 分別指向鍊錶的頭結點和尾節點, 即作為佇列的頭和尾, 在隊尾進行插入操作, 在對頭進行出隊操作

定義乙個鏈佇列

//定義乙個佇列

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...