• 数据结构::队列


    队列
    限定只允许在表的一端插入,另一端删除,具有先进先出特点的线性表
    队尾:允许插入的一端
    队头:允计删除的一端
    应用:凡是对数据的处理具有“先进先出”的特点,都可以用队列这种数据结构来操作。
    循环队列
    队尾插入信息并移动指针rear
    队头取走信息并移动指针front
    缓冲区有信息 rear与front不相等,有可能大于或小于 缓冲区无信息 rear
    == front
    /*=========================================================================
      工程名称:    通过链表管理队列 
      功能描述:    通过链表管理队列,,向循环队列中加入消息
      程序分析:    与栈不同的是,队列的指针域应该是向后顺序指的,主要是靠移动队头队尾指针进行操作  
    =========================================================================*/
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef  struct Qnode
    {
        int  data;
        struct Qnode *next;
    }Qnode;
     
    Qnode  *front;      //队头指针
    Qnode  *rear;       //队尾指针
     
    int EnQueue( int *e)
    {
        Qnode *p;
        p=(Qnode *)malloc(sizeof(Qnode));
     
        p->data=*e;         //将数据加入到队列中
        p->next=NULL;       //队尾指向NULL
        rear->next=p;       //调整队尾指针位置,为下一次压栈做准备
        rear=p;
        return  1;
    }
     
     
     
    int DeQueue( int *e)
    {
        Qnode *p;
        if(front==rear)
            return 0;           //队空
     
        p=front->next;          //获得出队指针
        *e=p->data;             //将待出队节点的数据取出
        front->next= p->next;   //调整对头指针,为下次出队做准备
     
        if(p == rear)           //若队头指针追上队尾指针,调整队头指针,此时队空
            rear = front;
     
        free(p);                //释放已出队数据
        return 1;
    }
     
    int main()
    {
        int a = 11;
        int c = 12;
        int b = 0;
        rear=front=(Qnode *)malloc(sizeof(Qnode));
        EnQueue(&a);        //插入队列
        EnQueue(&c);        //插入队列
     
        DeQueue(&b);        //弹出队列
        printf("%d
    ",b);
    DeQueue(
    &b); //弹出队列 printf("%d ",b); }
  • 相关阅读:
    第七讲 宋词:婉约之曲与豪放之声
    P2024 食物链
    可以吹一年的事
    信息传递
    11.11模拟赛总结(又名斗地主战记)
    11.9模拟赛总结
    扩展欧几里得(exgcd模板)
    发糖果(拓扑排序模板)
    高斯消元
    关于我
  • 原文地址:https://www.cnblogs.com/osbreak/p/14527227.html
Copyright © 2020-2023  润新知