亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

    洛扎县| 花莲县| 延寿县| 岫岩| 淳化县| 克拉玛依市| 乐平市| 吉安县| 深泽县| 桐梓县| 西华县| 基隆市| 东安县| 阿鲁科尔沁旗| 灯塔市| 桂平市| 克什克腾旗| 肥西县| 措勤县| 崇礼县| 泌阳县| 古丈县| 潼关县| 西宁市| 民和| 林口县| 黔江区| 临邑县| 石泉县| 青河县| 靖西县| 河曲县| 黄大仙区| 治县。| 乌海市| 景谷| 安新县| 容城县| 新晃| 独山县| 大余县|