1. 程式人生 > >C語言 ,單鏈表實現佇列(初始化,入隊,出隊,元素個數,隊首元素,是否為空)

C語言 ,單鏈表實現佇列(初始化,入隊,出隊,元素個數,隊首元素,是否為空)

單鏈表實現佇列:

連結串列為空的判斷條件:pQueue->pFront==pQueue->pRear或者若結構體中存在數的個數時,判斷pQueue->size==0,即元素個數為0

標頭檔案:佇列.h

#pragma once
#include<stdio.h>
#include<stdlib.h>

//利用單鏈表實現佇列

//函式介面 :

typedef int QDataType;

typedef struct QNode {
    QDataType data;
    struct QNode *pNext;
} QNode;

typedef struct Queue {
    QNode *pFront;
    QNode *pRear;
    int size;
} Queue;

// 初始化 
void QueueInit(Queue *pQueue)
{
    pQueue->pFront = pQueue->pRear = NULL;
    pQueue->size = 0;
}

// 入佇列 
void QueuePush(Queue *pQueue, QDataType data)
{
    QNode*node = (QNode*)malloc(sizeof(QNode));
    node->data = data;
    if (pQueue->size == 0)
    {
        pQueue->pFront = node;
        pQueue->pRear = node;
        pQueue->size++;
        return;
    }
    pQueue->pRear->pNext = node;
    pQueue->pRear = pQueue->pRear->pNext;
    pQueue->size++;
}

// 出佇列 
void QueuePop(Queue *pQueue)
{
    Queue*pp = pQueue;
    if (pQueue->size == 0)
    {
        printf("連結串列為空!\n");
        return;
    }
    pQueue->pFront = pQueue->pFront->pNext;
    pQueue->size--;
}

// 返回隊首元素 ,返回-1表明空連結串列
QDataType QueueFront(Queue *pQueue)
{
    if (pQueue->pFront == pQueue->pRear)
        return -1;
    return pQueue->pFront->data;
}

// 判斷是否為空 
// 1 空 
// 0 不空 
int QueueIsEmpty(Queue *pQueue)
{
    if (pQueue->size == 0)
        return 1;
    else
        return 0;
}

// 返回資料個數 
int QueueSize(Queue *pQueue)
{
    return pQueue->size;
}

void test()
{
    Queue pQueue;
    QueueInit(&pQueue);
    /*QueuePush(&pQueue, 0);
    QueuePush(&pQueue, 1);
    QueuePush(&pQueue, 2);
    QueuePush(&pQueue, 3);
    QueuePush(&pQueue, 4);
    QueuePush(&pQueue, 5);
    QueuePush(&pQueue, 6);
    QueuePush(&pQueue, 7);
    QueuePush(&pQueue, 8);*/

    printf("%d:  ", QueueFront(&pQueue));

    int a = QueueSize(&pQueue);//資料個數
    
    QueuePop(&pQueue);

    a = QueueSize(&pQueue);

    int b = QueueIsEmpty(&pQueue);//判斷是否為空
}
原始檔:main.cpp

#include"佇列.h"


int main()
{
    test();
    system("pause");
    return 0;
}