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. 通过apache,和nginx模块去除html中的空格和tab

    最近一个项目中,合作方要求去除html中的空格,不想改代码,所以百度了一下通过apache,和nginx模块去除html中的空格和tab的方案,下面记录下来: 一.nginx nginx可以通过mod ...

  2. web 表单方式上传文件方法(不用flash插件)

    原理:使用表单的input type="file"标签,通过ajax提交表单请求,后台获取请求中的文件信息,进行文件保存操作 由于我测试用的做了一个上传文件和上传图片方法,所以我有 ...

  3. 36:字符串排序SortString

    题目描述:编写一个程序,将输入字符串中的字符按如下规则排序. 规则1:英文字母从A到Z排列,不区分大小写. 如,输入:Type 输出:epTy 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排 ...

  4. Spring学习十五----------Spring AOP API的Pointcut、advice及 ProxyFactoryBean相关内容

    © 版权声明:本文为博主原创文章,转载请注明出处 实例: 1.项目结构 2.pom.xml <project xmlns="http://maven.apache.org/POM/4. ...

  5. PHP的对象和引用

    PHP 的引用是别名,就是两个不同的变量名字指向相同的内容.在 PHP 5,一个对象变量已经不再保存整个对象的值.只是保存一个标识符来访问真正的对象内容. 当对象作为参数传递,作为结果返回,或者赋值给 ...

  6. MVC初了解

    MVC:Model-View-Controller,将数据和显示形式分离. Model:能够看做是三层中的D层+B层,实现业务逻辑和与数据库的交互. View:看做是U层,用来显示数据. Contro ...

  7. HDFS源码分析心跳汇报之数据块汇报

    在<HDFS源码分析心跳汇报之数据块增量汇报>一文中,我们详细介绍了数据块增量汇报的内容,了解到它是时间间隔更长的正常数据块汇报周期内一个smaller的数据块汇报,它负责将DataNod ...

  8. PHP和mysql的长连接

    关于 PHP MySQL 长连接.连接池的一些探索 PHP连接MySQL的方式,用的多的是mysql扩展.mysqli扩展.pdo_mysql扩展,是官方提供的.php的运行机制是页面执行完会释放所有 ...

  9. 记录下关于ejabberd及XMPP的官网链接

    ejabberd中文翻译 ——http://wiki.jabbercn.org/Ejabberd2:安装和操作指南 XMPP中文翻译: http://wiki.jabbercn.org/XEP-012 ...

  10. activiti自己定义流程之Spring整合activiti-modeler实例(六):启动流程

    1.启动流程并分配任务是单个流程的正式開始,因此要使用到runtimeService接口.以及相关的启动流程的方法.我习惯于用流程定义的key启动,由于有多个版本号的流程定义时,用key启动默认会使用 ...