隊列

#include "stdio.h"
#include "stdlib.h"
#define ElemType int
typedef struct NodeType{
    ElemType data;
    struct NodeType *next;
}NodeType;
typedef struct{
    NodeType *front,*rear;
}LinkQueue;
NodeType *p,*s,*h;
void outlin(LinkQueue qq);
void creat(LinkQueue *qe);
void insert(LinkQueue *qe,ElemType x);
ElemType delet(LinkQueue *qe);
int main(){
    LinkQueue que;
    ElemType y,x;
    int i,cord;
    do{
        printf("\n    主菜單    \n");
        printf("    1.建立鏈表隊列\n");
        printf("    2.入隊一個元素\n");
        printf("    3.出隊一個元素\n");
        printf("    4.結束程序運行\n");
        printf("    --------------\n");
        printf("輸入你的選擇:1.2.3.4\n");
        scanf("%d",&cord);
        switch(cord){
            case 1:{
                creat(&que);
                outlin(que);
            }break;
            case 2:{
                printf("\n x=?");
                scanf("%d",&x);
                insert(&que,x);
                outlin(que);
            }break;
            case 3:{
                y=delet(&que);
                printf("\n    x=%d\n",y);
                outlin(que);
            }break;
            case 4:exit(0);
        }
    }while(cord<=4);
    return 0;
}

void outlin(LinkQueue qq){
    p=qq.front->next;
    while(p!=NULL){
        printf("   data=%4d\n",p->data);
        p=p->next;    
    }
    printf("\n   outend   \n\n");
}
void insert(LinkQueue    *qe,int x){
    s=(NodeType*)malloc(sizeof(NodeType));
    s->data=x;
    s->next=NULL;
    qe->rear->next=s;
    qe->rear=s;
}
ElemType delet(LinkQueue    *qe){
    ElemType x;
    if(qe->front==qe->rear){
        printf("隊列爲空\n");
        x=0;
    }else{
        p=qe->front->next;
        qe->front->next=p->next;
        if(p->next==NULL)
            qe->rear=qe->front;
        x=p->data;
        free(p);
    }
    return x;
    
}
void creat(LinkQueue    *qe){
    int i,n,x;
    h=(NodeType*)malloc(sizeof(NodeType));
    h->next=NULL;
    qe->front=h;
    qe->rear=h;
    printf("請輸入預先進入隊列的數據元素數量 n=");
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        printf("\n  data=");
        scanf("%d",&x);
        insert(qe,x);
    }
    

}

有時間再寫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章