隊列

頭刪,尾插
#include<stdio.h>
#include<stdlib.h> 
typedef struct Queue
{
    int num;
    struct Queue *next;
}Queue;

typedef struct pQueue
{
    Queue *first;
    Queue *tail; 
} pQueue;

int getNum()
{
    int num;
    printf("請輸入數(shù)字:");
    scanf("%d",&num);
    return num;
}

pQueue* creatQueue(pQueue *queueHead)    //創(chuàng)建鏈表
{
    if (queueHead==NULL)
    {
        queueHead=(pQueue *)malloc(sizeof(pQueue));
        queueHead->first=queueHead->tail=NULL;
        return queueHead;
    }
    return queueHead;
}

void tailInsertData(pQueue *queueHead)           //尾插
{
    if(queueHead==NULL)
    {
        printf("沒有創(chuàng)建成功\n");
        return ;
    }
    Queue *p=(Queue *)malloc(sizeof (Queue));
    p->num=getNum();
    if(queueHead->first==NULL)
    {
        queueHead->first=p;
        queueHead->tail=p;
        p->next=NULL;
        return;
    }
    p->next=NULL;
    queueHead->tail->next=p;
    queueHead->tail=p; 
}

void headDeleteDta(pQueue *queueHead)                        //頭刪
{
    if(queueHead==NULL||queueHead->tail==NULL)
    {
        printf("無信息可刪!\n");
        return ; 
    }
    if(queueHead->first->next==NULL)
    {
        free(queueHead->first);
        queueHead->first=queueHead->tail=NULL;
        return;
    }
    Queue *p=queueHead->first;
    queueHead->first=p->next;
    free(p);
    p=NULL;
}


void printData(pQueue *queueHead)                          //打印信息 
{
    if(queueHead==NULL||queueHead->tail==NULL)
    {
        printf("無信息可打印\n");
        return;
        
    }
    Queue *temp;
    printf("Head-->");
    for(temp=queueHead->first; temp!=NULL; temp=temp->next)
    {
        printf("[%d]-->",temp->num);
    }
    printf("NULL\n");
} 
int main()
{
    pQueue *queueHead=NULL;
    int select;
    while(1)
    {
        printf("=======\n");
        printf("1.創(chuàng)建數(shù)據(jù)\n");
        printf("2.刪除數(shù)據(jù)\n");
        printf("3.插入數(shù)據(jù)\n");
        printf("4.打印隊列\(zhòng)n");
        printf("5.退出\n");
        printf("=======\n");
        scanf("%d",&select);
        switch(select)
        {
            case 1:
                queueHead=creatQueue(queueHead);
                break;
            case 2:
                headDeleteDta(queueHead);
                break;
            case 3:
                tailInsertData(queueHead);
                break;              
            case 4:
                printData(queueHead);
                break;              
            case 5:
            
                return 0;
            default:
                break;                              
        }       
        
    }


    return 0;
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容