zoukankan      html  css  js  c++  java
  • C语言实现队列(纯C)

    1. [代码][C/C++]代码     

    #include <stdio.h>
    #include <stdlib.h>
    #define ElemType int 
    #define Status int
    #define OK 1
    #define ERROR 0
    typedef struct QNode{
        ElemType data;
        struct QNode *next;
    }QNode;
    typedef struct LinkQueue{
        QNode *front;
        QNode *rear;
    }LinkQueue;
    Status InitQueue(LinkQueue *q)
    {
        q->front=q->rear=(QNode *)malloc(sizeof(QNode));
        if(!q->front)
              return ERROR;
        q->front->next=NULL;
        return OK;
    }
    Status EnQueue(LinkQueue *q,ElemType e)

         QNode *p=(QNode *)malloc(sizeof(QNode));
         if(!p)
               return ERROR;
         p->data=e;
         p->next=NULL;
         q->rear->next=p;//入队操作,从队尾(rear)进入
         q->rear=p;//相当于rear++,q->rear指向下一个位置
                   //符合入队操作的基本要求
         return OK;
    }
    Status DeQueue(LinkQueue *q,ElemType *e)
    {
        QNode *p=(QNode *)malloc(sizeof(QNode));
        if(!p)
             return ERROR;
     
        p=q->front->next;//q指向的是front指针的下一个位置
                         //亦即队首元素
        *e=p->data;
        q->front->next=p->next;//出队操作后,front++
        if(q->rear==p)//判断是否全部出队
              q->rear=q->front;//如果全部出队,则将队列置为空
        return OK;
    }
    Status Display(LinkQueue *q)
    {http://www.huiyi8.com/dongman/weimei/
        QNode *p;
        p=q->front->next;
        while (p)
        {唯美动漫图片
            printf("%d ",p->data);
            p=p->next;
        }
        printf(" ");
        return OK;
    }
     
    Status PrintfQueue(LinkQueue *Q)
    {
        QNode *p;
         
        for(p=Q->front->next;p!=NULL;p=p->next)
           {
              printf("%d",p->data);
           }    
    }
    int main(void)
    {
        int i,n;
        ElemType e,de;
        LinkQueue *q=(LinkQueue *)malloc(sizeof(QNode));
        if(!q)
             return ERROR;
        InitQueue(q);
        printf("请输入入队元素的个数: ");
        scanf("%d",&n);
        printf("请输入入队的元素: ");
        for(i=0;i<n;++i)
        {
            scanf("%d",&e);
            EnQueue(q,e);
        }
        printf("队列中的元素为: ");
        Display(q);
        printf("出队元素为: ");
        DeQueue(q,&de);
        printf("%d",de);
        printf(" ");
        printf("出队后剩余的序列为: ");
       Display(q);
        free(q);
        return 0;
    }

  • 相关阅读:
    Android之动态图片
    Java之简单图形面积计算
    Java之姐妹素数
    Java之经典Student问题2
    数据库事务四大特性
    TCP/IP分层
    海量数据问题处理办法
    36个常见java面试题
    【19】【滑动窗口】【栽跟头】最长不重复子字符串
    一些面试题
  • 原文地址:https://www.cnblogs.com/xkzy/p/3958024.html
Copyright © 2011-2022 走看看