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("\n");
    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("请输入入队元素的个数:\n");
    scanf("%d",&n);
    printf("请输入入队的元素:\n");
    for(i=0;i<n;++i)
    {
        scanf("%d",&e);
        EnQueue(q,e);
    }
    printf("队列中的元素为:\n");
    Display(q);
    printf("出队元素为:\n");
    DeQueue(q,&de);
    printf("%d",de);
    printf("\n");
    printf("出队后剩余的序列为:\n");
   Display(q);
    free(q);
    return 0;
}

C语言实现队列(纯C)的更多相关文章

  1. c语言多线程队列读写

    最近用c语言写了个简单的队列服务,记录一下,文件结构为 main.c queue.c queue.h,代码如下: 主函数 #define NUM_THREADS 200 #include <st ...

  2. C语言数据结构-队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作

    1.数据结构-队列的实现-C语言 //队列的存储结构 #define MAXSIZE 100 typedef struct { int* base; //基地址 int _front; //头指针 i ...

  3. C语言 复杂队列(链表队列)

    //复杂的队列二 --链表队列 #include<stdio.h> #include<stdlib.h> #define datatype int struct queueli ...

  4. C语言描述队列的实现及操作(链表实现)

    // 队列的单链表实现 // 头节点:哨兵作用,不存放数据,用来初始化队列时使队头队尾指向的地方 // 首节点:头节点后第一个节点,存放数据 #include<stdio.h> #incl ...

  5. C语言描述队列的实现及操作(数组实现)

    一.静态数组实现 1.队列接口 #include<stdio.h> // 一个队列模块接口 // 命名为myqueue.h #define QUEUE_TYPE int // 定义队列类型 ...

  6. C语言——循环队列和链队列的基本运算

    // 循环队列#include <stdio.h> #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20 ...

  7. C语言链队列

    链队列类似于单链表,为了限制只能从两端操作数据,其结构体内有2个指针分别指向头尾,但队列里的节点用另一种结构体来表示,头尾指针则为指向该结构体的类型.只能通过操作头尾指针来操作队列. typedef ...

  8. C语言顺序队列

    顺序队列是一种只能在一头进和另一头出的数据结构,所以结构体里设2个指针分别指向头部和尾部,用数组来存储数据. #define MAXSIZE 1024 typedef int elemtype; ty ...

  9. 一起talk C栗子吧(第二十二回:C语言实例--队列一)

    各位看官们,大家好,上一回中咱们说的是表达式求值的样例,该样例使用了栈,这一回咱们说的是栈的 兄弟:队列. 闲话休提,言归正转.让我们一起talk C栗子吧. 我们在这里说的队列是一种抽象的数据结构, ...

随机推荐

  1. java Excel导入、自适应版本、将Excel转成List<map>对象

    转载:http://blog.csdn.net/u012662357/article/details/58593020 最近在web开发中遇到excel批量导入,在网上搜了下很少有将excel直接转成 ...

  2. base64加密PHP脚本的解码方法

    转自:http://yoursunny.com/t/2009/PHP-decode/ PHP是网站服务端最流行的编程语言之一.PHP运行环境本身是开源的,服务器不加载插件时PHP脚本也无法加密.但是, ...

  3. php的strip_tags,htmlspecialchars,htmlentities,stripslashes,addslashes解释

    php函数蛮多的,要完整的每个函数都理解深刻是个挺有挑战性的事情. strip_tags,htmlspecialchars,htmlentities,stripslashes,addslashes这几 ...

  4. keras----resnet-vgg-xception-inception

    来源: https://www.pyimagesearch.com/2017/03/20/imagenet-vggnet-resnet-inception-xception-keras/ classi ...

  5. Linux - 配置SSH免密通信 - “ssh-keygen”的基本用法

    目录 1 什么是SSH 2 配置SSH免密登录 2.1 安装必需的软件 2.2 ssh-keygen创建公钥-私钥对 2.3 ssh-copy-id把A的公钥发送给B 2.4 在A服务器上免密登录B服 ...

  6. 精彩回顾 HUAWEI HiAI 亮相华为北研所

    ​​从普通照片变成艺术品,仅需3秒: 从随手拍下的讲解胶片到生成规整清晰的ppt,只要瞬间…… 5月25日在华为北京研究所举办的HUAWEI HiAI技术合作交流会上,伴随着一声声惊叹,数款接入HUA ...

  7. mongodb的mongod.lock文件及oplog文件

    在mongodb的启动时,在数据目录下,会生成一个mongod.lock文件.如果在正常退出时,会清除这个mongod.lock文件,若要是异常退出,在下次启动的时候,会禁止启动,从而保留一份干净的一 ...

  8. HTTP状态码介绍详细

    HTTP协议中几个状态码的含义:1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 100 (继续) 请求者应当继续提出请求. 服务器返回此代码表示已收到请求的第一部分, ...

  9. 最新番茄花园win7系统快速稳定版

    这是最新番茄花园win7系统64位快速稳定版 V2016年2月,该系统由系统妈整理和上传,系统具有更安全.更稳定.更人性化等特点.集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加 ...

  10. EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:内部搜索功能的实现

    上一篇介绍了处理接口获取的数据,本篇将介绍如何在接收到的数据中搜索出自己符合条件的数据: 为了页面的美观,我们往往会以分页的形式来进行数据的展示.但是,当需要展示出来的数据太多的时候,我们很难迅速的找 ...