帶頭結點的鏈佇列實現(C語言)

2021-06-09 20:56:30 字數 1502 閱讀 5850

/*

帶頭結點的鏈佇列

vs2010 除錯

*/#include #include #include #define ok 1

#define error 0

#define true 1

#define false 0

typedef struct queue_node qnode;

typedef struct queue_node

;typedef struct link_queue

lqueue;

/*函式功能: 鏈佇列初始化

*/int init_link_queue(lqueue *q)

tmp_node->next = null;

q->head = tmp_node;

q->tail = tmp_node;

return ok;}/*

函式功能: 佇列是否為空

返 回 值: 1 空; 0 非空

*/int is_queue_empty(lqueue q)

/*函式功能: 元素num入隊

*/int enqueue(lqueue *q, int num)

tmp_node->next = null;

tmp_node->data = num;

q->tail->next = tmp_node;

q->tail = tmp_node;

return ok;}/*

函式功能: 出隊,隊頭元素存入num

*/int dequeue(lqueue *q, int *num)

tmp_node = q->head->next;

q->head->next = tmp_node->next;

*num = tmp_node->data;

if(q->head->next == null)

free(tmp_node);

return ok;}/*

函式功能: 獲取隊頭元素,存入num

*/int get_elem(lqueue q, int *num)

*num = q.head->next->data;

return ok;}/*

函式功能: 列印佇列元素

*/void print_queue(lqueue q)

free(tmpq.head);

printf("tail\n");}/*

函式功能: 銷毀佇列

*/void destory_queue(lqueue *q)}/*

函式功能: 獲得佇列長度

返 回 值: 長度

*/int get_queue_length(lqueue q)

do while(tmpq.head != null);

free(tmpq.head);

return length;

}int main(int argc, char *argv)

帶頭結點的鏈佇列實現

佇列 queue 在電腦科學中,是一種先進先出的線性表。和棧相反,它只允許在表的一端進行插入,而在表的另一端刪除元素。佇列是一種特殊的線性表,它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為...

帶頭結點的鏈佇列的基本操作

實現鏈佇列的入佇列及出佇列操作。status queueinsert linkqueue q,elemtype e status queuedelete linkqueue q,elemtype e 其中q和e都是使用者傳入的引數。linkqueue的型別定義如下 typedef int elemt...

資料結構 鏈佇列 帶頭結點

5.小結 include include define elemtype inttypedef struct linknode linknode typedef struct linkqueue 函式宣告 void initqueue linkqueue q 1.初始化佇列 bool liqueue...