工作之余來寫寫C語言相關(guān)知識,以免忘記。今天就來聊聊C語言實現(xiàn)循環(huán)隊列,我是分享人M哥,目前從事車載控制器的軟件開發(fā)及測試工作。
學(xué)習(xí)過程中如有任何疑問,可底下評論!
如果覺得文章內(nèi)容在工作學(xué)習(xí)中有幫助到你,麻煩點贊收藏評論+關(guān)注走一波!感謝各位的支持!
今天給大家?guī)硌h(huán)隊列的實現(xiàn)代碼,至于隊列的實現(xiàn)原理,網(wǎng)絡(luò)上有許多詳細的解釋,我這里就不在贅述,直接上代碼;
1.queueCycle.h隊列頭文件
#ifndef QUEUECYCLE_H_
#define QUEUECYCLE_H_
#define FALSE (0)
#define TRUE (1)
/*定義循環(huán)隊列結(jié)構(gòu)*/
typedef struct Queue {
int* data; /*隊列元素*/
int size; /*隊列大小*/
int front; /*隊首*/
int rear; /*隊尾*/
}Queue_t;
void queue_init(Queue_t* pQueue, int n);
int queue_is_empty(Queue_t* pQueue);
int queue_is_full(Queue_t* pQueue);
int queue_push(Queue_t* pQueue, int* data);
int queue_pop(Queue_t* pQueue, int* data);
int queue_get_front(Queue_t* pQueue, int* value);
void printfQueue(Queue_t* pQueue);
#endif // !1
2.queueCycle.c隊列函數(shù)實現(xiàn)
#include <stdio.h>
#include <stdlib.h>
#include "queueCycle.h"
void queue_init(Queue_t *pQueue, int n) {
pQueue->data = (int*)malloc((n+1) * sizeof(int));
pQueue->size = n + 1;
pQueue->front = 0;
pQueue->rear = 0;
}
int queue_is_empty(Queue_t *pQueue) {
return (pQueue->front == pQueue->rear); /*判斷隊列是否為空*/
}
int queue_is_full(Queue_t *pQueue) {
return (pQueue->front == (pQueue->rear + 1)%pQueue->size); /*判斷隊列是否滿*/
}
int queue_push(Queue_t *pQueue, int *data) {
if (queue_is_full(pQueue))
{
printf("隊列已滿\n");
return FALSE;
}
pQueue->data[pQueue->rear] = *data; /*入隊列*/
pQueue->rear = (pQueue->rear + 1) % (pQueue->size);
return TRUE;
}
int queue_pop(Queue_t* pQueue, int* data) {
if (queue_is_empty(pQueue))
{
printf("隊列為空\n");
return FALSE;
}
*data = pQueue->data[pQueue->front];
pQueue->front = (pQueue->front + 1) % (pQueue->size);
return TRUE;
}
int queue_get_front(Queue_t *pQueue, int *value) {
if (queue_is_empty(pQueue))
{
return FALSE;
}
*value = pQueue->data[pQueue->front];
return TRUE;
}
void printfQueue(Queue_t *pQueue) {
if (queue_is_empty(pQueue))
{
printf("隊列為空\n");
return FALSE;
}
while (pQueue->front != pQueue->rear) {
printf("%d ", pQueue->data[pQueue->front]);
pQueue->front = (pQueue->front + 1) % (pQueue->size);
}
}
3.main.c主函數(shù)隊列驗證
#include <stdio.h>
#include <stdlib.h>
#include "queueCycle.h"
int main()
{
int i,n = 5;
int data = 0;
Queue_t queue;
queue_init(&queue, n);
for (i = 1;i < 6;i++)
{
queue_push(&queue, &i);
}
for (i = 1;i < 3;i++)
{
queue_pop(&queue, &i);
}
queue_get_front(&queue, &data);
printf("%d\n", data);
/*for (i = 0;i < 5;i++)
{
queue_pop(&queue, &i);
printf("%d", i);
}*/
printfQueue(&queue);
}
感謝對本期內(nèi)容不遺余力的學(xué)習(xí),下期內(nèi)容即將奉上,歡迎下次光臨!文章來源:http://www.zghlxwxcb.cn/news/detail-669737.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-669737.html
到了這里,關(guān)于軟件開發(fā)中常用數(shù)據(jù)結(jié)構(gòu)介紹:C語言隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!