编写队列管理的模拟算法,队列管理的模拟算法采用如下管理模式:

#include<stdio.h>
#include<stdlib.h>
typedef struct node{
    int data;
    struct node *next;
}QNode;
typedef struct link{
    QNode *front,*rear;


}LinQueue;
LinQueue *initQueue(){
    QNode *q=(QNode *)malloc(sizeof (struct node));//为链表的头节点申请存储空间
    LinQueue *p=(LinQueue *)malloc (sizeof (struct link));//申请指向头节点的指向队尾很对首的指针
    q->next=NULL;//初始化头节点
    p->front=p->rear=q;//让头首和尾指向头节点
    return p;//返回指针
}
void addQueue(LinQueue *q,int x){
    QNode *p=(QNode *)malloc(sizeof (struct node));//创建一个新的链表
    p->data=x;//为该节点赋值
    p->next=NULL;//最后一个指向null
    q->rear->next=p;//将p链接到raer的后继节点
    q->rear=p;//让rear指向最后一个节点
}
void delQueue(LinQueue *q,int *x){
    QNode *p;
    if(q->front==q->rear){//如果两个指针指向的相同代表链表为空
        printf("什么都没有你要删个串串!!!!!!!!!!!");
        return 0;
    }
    p=q->front->next;//将当前的节点得到
    q->front->next=p->next;//把当前节点删除
    *x=p->data;//得到当前节点的值
    free(p);//释放掉当前的空间
    if(q->front->next==NULL){//当链表已经是个空的时候
        q->rear=q->front;//让链的头和尾指向头节点
        printf("已经被删干净了没什么东西了,给点面子好不好!");
    }
}
/**
2、编写队列管理的模拟算法,队列管理的模拟算法采用如下管理模式:
(1)队列初始化为空队列
(2)当键盘输入奇数时,奇数入队列
(3)当键盘输入偶数时,队头出队列
(4)当键盘输入0时,退出算法
(5)每当键盘输入一个整数时,显示操作后队列中的值
**/
void demo(){
    int x;
    LinQueue *q=initQueue();//数据的初始化
    QNode *p;
    scanf("%d",&x);//录入用户输入的值
    while(x!=0){
        if(x%2){//奇数入栈,偶数输出
            addQueue(q,x);//创建链表
        }else{
            delQueue(q,&x);//删除链表并保存x的值,好像x的值返回也没什么用啊??


        }
        p=q->front->next;//记录当前的节点
//        if(p==NULL){
//            printf("什么都没有你要删个串串!!!!!!!!!!!\n");
//            scanf("%d",&x);
//            continue;
//        }
        while(p){
            printf("这里的输出是:%d\t",p->data);//输出当前节点的值
            p=p->next;//指向下一个节点
        }
        printf("\n");
        scanf("%d",&x);//录入之后用户存储的数据
    }


}
int main(){
    demo();//测试第一个
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值