91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

    江北区| 白朗县| 高碑店市| 调兵山市| 新化县| 昌都县| 合川市| 南乐县| 武义县| 如皋市| 康乐县| 防城港市| 胶南市| 平遥县| 民乐县| 南昌县| 荃湾区| 镇赉县| 景东| 乾安县| 洛扎县| 临泉县| 济宁市| 陆良县| 临海市| 通许县| 将乐县| 洞口县| 淮滨县| 万宁市| 安丘市| 屏南县| 乌兰察布市| 洛浦县| 工布江达县| 综艺| 清水县| 海晏县| 偃师市| 兰考县| 嘉峪关市|