中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++中隊列有什么用

發布時間:2021-11-16 17:14:55 來源:億速云 閱讀:128 作者:小新 欄目:開發技術

這篇文章主要介紹C++中隊列有什么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

    1. 隊列的概念及結構

    隊列:只允許在一端進行插入數據操作,在另一端進行刪除數據操作的特殊線性表,隊列具有先進先出FIFO(First In First Out) 入隊列:進行插入操作的一端稱為隊尾 出隊列:進行刪除操作的一端稱為隊頭

    C++中隊列有什么用

    C++中隊列有什么用

    2. 隊列的實現

    2.1 queue.h

    #include<stdio.h>
    #include<stdbool.h>
    #include<assert.h>
    #include<malloc.h>
    typedef int QDataType;
    typedef struct QueueNode
    {
    	struct QueueNode*next;
    	QDataType data;
    }QueueNode;
    typedef struct Queue
    {
    	QueueNode *head;
    	QueueNode *tail;
    }Queue;
    void QueueInit(Queue *pq);
    void QueueDestory(Queue *pq);
    void QueuePush(Queue *pq,QDataType x);
    void QueuePop(Queue *pq);
    QDataType QueueFront(Queue *pq);
    QDataType QueueBack(Queue *pq);
    bool QueueEmpty(Queue *pq);
    int QueueSize(Queue *pq);

    2.2 queue.c

    #include"queue.h"
    void QueueInit(Queue *pq)
    {
    	assert(pq);
    	pq->head = pq->tail = NULL;
    }
    void QueueDestory(Queue *pq)
    {
    	assert(pq);
    	QueueNode *cur = pq->head;
    	while (cur)
    	{
    		QueueNode *next = cur->next;
    		free(cur);
    		cur = next;
    	}
    	pq->head = pq->tail = NULL;
    }
    void QueuePush(Queue *pq, QDataType x)
    {
    	assert(pq);
    	QueueNode *newnode = (QueueNode*)malloc(sizeof(QueueNode));
    	if (newnode == NULL)
    	{
    		printf("malloc fail\n");
    		exit(-1);
    	}
    	newnode->data = x;
    	newnode->next = NULL;
    	if (pq->tail == NULL)
    	{
    		pq->head = pq->tail = newnode;
    	}
    	else
    	{
    		pq->tail->next = newnode;
    		pq->tail = newnode;
    	}
    }
    void QueuePop(Queue *pq)
    {
    	assert(pq);
    	assert(!QueueEmpty(pq));
    	if (pq->head->next == NULL)
    	{
    		free(pq->head);
    		pq->head = pq->tail = NULL;
    	}
    	else
    	{
    		QueueNode *next = pq->head->next;
    		free(pq->head);
    		pq->head = next;
    	}
    }
    QDataType QueueFront(Queue *pq)
    {
    	assert(pq);
    	assert(!QueueEmpty(pq));
    	return pq->head->data;
    }
    QDataType QueueBack(Queue *pq)
    {
    	assert(pq);
    	assert(!QueueEmpty(pq));
    	return pq->tail->data;
    }
    bool QueueEmpty(Queue *pq)
    {
    	assert(pq);
    	return pq->head == NULL;
    }
    int QueueSize(Queue *pq)
    {
    	int size = 0;
    	QueueNode *cur = pq->head;
    	while (cur)
    	{
    		QueueNode *next = cur->next;
    		++size;
    		cur = cur->next;
    	}
    	return size;
    }

    2.3 test.c

    #include"queue.h"
    void TestOne()
    {
    	Queue q;
    	QueueInit(&q);
    	QueuePush(&q, 1);
    	QueuePush(&q, 2);
    	QueuePush(&q, 3);
    	QueuePush(&q, 4);
    	while (!QueueEmpty(&q))
    	{
    		printf("%d  ", QueueFront(&q));
    		QueuePop(&q);
    	}
    	printf("\n");
    	QueueDestory(&q);
    }
    int main()
    {
    	TestOne();
    	return 0;
    }

    以上是“C++中隊列有什么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    c++
    AI

    崇阳县| 宁津县| 周至县| 大田县| 云梦县| 舞钢市| 伊春市| 特克斯县| 湘阴县| 扶余县| 宜黄县| 墨江| 丁青县| 顺昌县| 达州市| 常州市| 安化县| 图木舒克市| 曲沃县| 德庆县| 米泉市| 正定县| 金坛市| 广东省| 阳春市| 浏阳市| 新丰县| 新化县| 双鸭山市| 芜湖市| 宁波市| 靖宇县| 崇阳县| 荣成市| 讷河市| 牡丹江市| 兴隆县| 霍城县| 云浮市| 天气| 渝北区|