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. JavaScript学习与实践一

    一.JavaScript数组 创建JavaScript数组有两种方式 方式一: var cars=new Array(); cars[0]="Audi"; cars[1]=&quo ...

  2. es6 - foreach

    foreach ... // es5 - foreach arr.forEach(function(value, index, arr) { console.log(value, index, arr ...

  3. fabric使用实例(发布web包的一个例子)

    #!/usr/bin/env python # -*- coding: utf-8 -* #添加中文注释的编码 #fabfile.py from fabric.api import * env.use ...

  4. mybatis数据查询返回值

    查询: 返回值是整数. 小于0是查询的数据不存在,大于0是查询的数据已经存在.  修改: 返回值是整数. 大于0是修改的数据成功,否则就是失败. 添加: 和修改同理.

  5. servletResponse 请求重定向

    package response;/* * 重定向特点: * 1,浏览器会向服务器发送两次请求,意味着就有两个request\response * 2,用重定向技术,浏览器地址栏会发生变化 *  * ...

  6. python学习(五)列表

    #!/usr/bin/python # 列表的学习, 列表的概念不陌生, 就是熟悉一下python中的列表是如何操作的 # 1. 序列的操作 L = [ 123, 'spam', 1.23] # 里面 ...

  7. CentOS下安装python3.x版本

    现在python都到了3.x版本,但是centos中自带的python仍然是2.7版本的,所以想把python换成3.x版本的. 但是这个地方有个坑,你要是直接编译安装了python3.x之后,估计你 ...

  8. 五分钟了解 Service Mesh

      1 背景   1.1 多语言   微服务理念是提倡不同业务使用最适合它的语言开发,现实情况也确实如此,尤其是AI的兴起,一般大型互联网公司存在 C/C++.Java.Golang.PHP.Pyth ...

  9. XMPP资源绑定(Resource Binding)

    一个XMPP的账号由三部分组成: 用户名(user/node),域名(domain)和资源(resource) .例如 alice@xmpp.irusher.com/mobile ,user部分(或n ...

  10. 深入Asyncio(二)从线程到协程

    线程的真相 多线程并不是一无是处,在实际问题中,要权衡优劣势来选择多线程.多进程或是协程.协程为多线程的某些问题提供了一种解决方案,所以学习协程首先要对线程有一定了解. 多线程优点 代码可读性 多线程 ...