佇列的初始化 進隊,出隊操作 C語言實現

2021-10-06 14:22:51 字數 2299 閱讀 5188

//標頭檔案和機構體

#include

#include

typedef

int elemtype;

//鍊錶節點

typedef

struct linkqueuenode

linkqueue;

//指向鍊錶的頭結點的節點

typedef

struct lqueue

lqueue;

//初始化佇列

lqueue *

init_linkqueue()

head -> next =

null

; q -> front = head;

q -> rear = head;

head -> data =0;

return q;

}

//入隊

void

enter_linkqueue

(lqueue *q,elemtype x)

p -> data = x;

p -> next =

null

; q -> front -> data ++

;//記錄節點的個數

q -> rear -> next = p;

q -> rear = p;

return

;}

//出隊

void

delete_linkqueue

(lqueue *q,elemtype *x)

*x = node -> data;

q -> front -> next = node -> next;

if(node == q -> rear)

free

(node)

; q -> front -> data --

;return

;}

//輸出

void

print

(lqueue *q)

}

下面的完整**

#include

#include

typedef

int elemtype;

typedef

struct linkqueuenode

linkqueue;

typedef

struct lqueue

lqueue;

//初始化佇列

lqueue *

init_linkqueue()

head -> next =

null

; q -> front = head;

q -> rear = head;

head -> data =0;

return q;

}//入佇列

void

enter_linkqueue

(lqueue *q,elemtype x)

p -> data = x;

p -> next =

null

; q -> front -> data ++

;//記錄節點的個數

q -> rear -> next = p;

q -> rear = p;

return;}

//出佇列

void

delete_linkqueue

(lqueue *q,elemtype *x)

*x = node -> data;

q -> front -> next = node -> next;

if(node == q -> rear)

free

(node)

; q -> front -> data --

;return;}

//輸出

void

print

(lqueue *q)

printf

("\n");

}int

main()

enter_linkqueue

(q,x);}

printf

("\n");

print

(q);

}

執行結果

用棧實現佇列的進隊出隊操作

假設有兩個棧stack1,stack2 用這兩個棧來實現佇列的push 和 pop 操作 思路 進隊 push 操作,直接使用stack1.push 將元素進棧即可 出隊 pop 操作,先判斷stack2是否為空。若不為空,則stack2直接出棧即可 若為空,則將stack1中的元素全部出棧,並依次...

迴圈佇列的初始化 入隊 出隊等基本操作

迴圈佇列的初始化 入隊 出隊等基本操作,實現 如下 include using namespace std define true 1 define false 0 迴圈佇列的型別定義 define maxsize 50 佇列的最大長度 typedef struct seqqueue 迴圈佇列初始化...

順序佇列初始化 入隊 出佇列 判斷隊空

include include include define maxsize 100 using namespace std 順序佇列的型別 struct sequeue 順序佇列的常用形式就是迴圈佇列,迴圈佇列的基本運算 void initqueue struct sequeue q 入佇列演算法...