链表

/*q.f中的数据域不存内容,q.rear的数据域中是有内容的*/
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{int data;struct Node *next;
}Node;
typedef struct Queue{Node *f,*r;
}Q;
void init(Q *q){q->f = q->r = (Node *)malloc(sizeof(Node));q->f->next = NULL;//q->f->data的值为NULL,这个域不会被用到(把q->f当做头指针来用)
}
//入队
void enQueue(Q *q,int x){Node *p = (Node*)malloc(sizeof(Node));//创造新的插入结点p->next = NULL;p->data = x;q->r->next = p;//插在队尾q->r = P;//改变rear的指向
}
//出队
void delQueue(Q *q,int *x){if(q->f != q->r){Node *p = q->f->next;//注意p的类型*x = p->data;//记录出队的数据q->f->next = p->next;//改变头指针的指向free(p);}
}
//遍历
void travel(Q q){Node *p;for(p = p=q.f->next;p!=NULL;p = p->next){//p = q.f->next;而不会p = q.f; 因为要把q.f当做头指针来用,其数据域是没有内容的printf("%3d\n",p->data);}
}int main(void){Q myq;int t;init(&myq);enQueue(&myq,11);enQueue(&myq,22);enQueue(&myq,33);enQueue(&myq,44);travel(myq);delQueue(&myq,&t);printf("\n deleted the element %d",t);return 0;
}

数组(循环队列)

#include <stdio.h>
#include <stdlib.h>
typedef struct Queue
{int arr[10];//会空出一个出来int front, rear;
}Q;
void init(Q* a_q)
{a_q->front = a_q->rear = 0;
}
void enqueue(Q* a_q, int x)
{if ((a_q->rear + 1) % 10 != a_q->front)//当a_q->rear==9时(即前面已经存入了9个元素),便不可再入队元素{// printf("%d\n",a_q->front);printf("%d\n",a_q->rear);// printf("%d\n",(10 + a_q->rear + 1) % 10);a_q->arr[a_q->rear] = x;a_q->rear = (a_q->rear + 1) % 10;}
}//出队
void delqueue(Q*a_q, int *x)
{if (a_q->front != a_q->rear)//是否是空{*x = a_q->arr[a_q->front];a_q->front = (a_q->front + 1) % 10;//front向前移动,之后可以进行入队操作}
}
//遍历
void travel(Q* aq)
{int i;for (i = aq->front; i != aq->rear; i=(i+1)%10)//从0号开始输出{printf("%5d\t", aq->arr[i]);}
}int main(void) {Q myq;int t;init(&myq);enqueue(&myq, 1);enqueue(&myq, 2);enqueue(&myq, 33);enqueue(&myq, 44);enqueue(&myq, 55);enqueue(&myq, 6);enqueue(&myq, 7);enqueue(&myq, 8);enqueue(&myq, 9);//enqueue(&myq, 10);//实际存入的只有前九个元素,10不会入队成功travel(&myq);delqueue(&myq, &t);enqueue(&myq, 10);//此时,10可以入队,因为由9个变成了8个printf("out%d\n",t);travel(&myq);return 0;
}

数据结构——队列操作相关推荐

  1. 数据结构——栈与队列操作(用栈模拟队列)

    [栈与队列操作] 问题描述:假设有两个长度相同的栈 S1,S2,已知以下入栈.出栈.判栈满和判栈空操作: void Push(S,x); Elemtype Pop(S); bool StackFull ...

  2. php优先队列,PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例

    队列这种数据结构更简单,就像我们生活中排队一样,它的特性是先进先出(FIFO). PHP SPL中SplQueue类就是实现队列操作,和栈一样,它也可以继承双链表(SplDoublyLinkedLis ...

  3. linux消息队列操作

    对消息队列的操作无非有以下三种类型: 1. 打开或创建消息队列 消息队列的内核持续性要求每一个消息队列都在系统范围内相应唯一的键值,所以,要获得一个消息队列的描写叙述字,仅仅需提供该消息队列的键值就可 ...

  4. java 数据结构_Java版-数据结构-队列(数组队列)

    前言 看过笔者前两篇介绍的 Java版数据结构 数组和 栈的盆友,都给予了笔者一致的好评,在这里笔者感谢大家的认可!!! 由于本章介绍的数据结构是 队列,在队列的实现上会基于前面写的 动态数组来实现, ...

  5. 数据结构——队列的C++实现

    数据结构--队列的C++实现 \qquad队列的创建.判断是否为空或者满.入队和出队操作的C++实现. #include<iostream> using namespace std;//1 ...

  6. java 数据队列_Java 数据结构 - 队列

    Java 数据结构 - 队列 我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的. 1. 什么是队列 和栈一样,队列也是一种操作受限的线性结构.使用队列时,在一端插入元素,而在另一 ...

  7. 队列的基本操作_算法设计:数据结构-队列

    一.队列 1.队列的概念 队列是一种"先进先出(first in first out)"的数据结构,它是一种有序线性表的抽象数据类型.队列在计算机 领域的应用也相当的广泛,例如计算 ...

  8. java循环队列_Java版-数据结构-队列(循环队列)

    前情回顾 在上一篇,笔者给大家介绍了数组队列,并且在文末提出了数组队列实现上的劣势,以及带来的性能问题(因为数组队列,在出队的时候,我们往往要将数组中的元素往前挪动一个位置,这个动作的时间复杂度O(n ...

  9. 数据结构队列-先进先出

    一,概述 队列这个概念非常好理解.你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队.先进者先出,这就是典型的"队列". 二,顺序队列和链式队列 队列和栈一样,也 ...

  10. 常见数据结构-队列先进先出

    一,概述 队列这个概念非常好理解.你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队.先进者先出,这就是典型的"队列". 二,顺序队列和链式队列 队列和栈一样,也 ...

最新文章

  1. php win memcached 5.4,CentOS 5.4下Memcache的安装步骤(Linux+Nginx+PHP+Memcached) 电脑维修技术网...
  2. Linux挂载卸载光盘实践
  3. 安装ssd后不识别网卡_缓冲床安装后不耐磨 缓冲条应该如何选择
  4. 学会这八个技术,你离 BAT 大厂不远了
  5. df的缺失值处理 df.isnull()和df.dropna()
  6. linux脚本计算器加减乘除,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....
  7. libreoffice使用_使用LibreOffice Calc管理您的财务
  8. 【58沈剑架构系列】微服务架构多“微”才合适?
  9. 金融领域的知识图谱搭建简单实操(基于Neo4J)
  10. 力扣739题:每日温度
  11. 一文扫尽检测类评估指标:AP、mAP、ReCall、OKS和IoU
  12. 手机软件测试实习感想
  13. 高通平台开发系列讲解(AI篇)高通神经网络处理引擎 SNPE SDK架构
  14. python中如何输出空格换行_Python将文件中空格变成换行的方法如何做
  15. 简单的博弈问题:牛羊吃草问题(递归解法-暴力解法)
  16. 2021年硕士研究生入学统一考试408计算机学科考试大纲
  17. FPGA学习笔面试记录(二)——FPGA基础
  18. 基于C++控制台(Windows平台)的一个植物大战僵尸小游戏
  19. XSL中特殊符号详解
  20. 千团大战再现社区团购 下一个“拼多多”会在这里诞生吗?

热门文章

  1. KKR创始人亨利·克拉维斯:像实业家那样思考和行动
  2. 中国唯一入选 Forrester 领导者象限,阿里云 Serverless 产品能力全球第一
  3. 我的 HTTP/1.1 好慢啊!
  4. 十年.十大经济金融事件
  5. 【语音隐写】基于matlab DCT+DWT+SVD音频数字水印嵌入提取【含Matlab源码 1408期】
  6. 【定位问题】基于matlab GUI SLAM模拟地图构建和定位【含Matlab源码 1120期】
  7. 【手写字母识别】基于matlab GUI ELMAN+BP神经网络手写大写字母(A-O)识别【含Matlab源码 785期】
  8. 【图像边缘检测】基于matlab蚁群聚类图像边缘检测【含Matlab源码 728期】
  9. centos 对某ip开放 防火墙端口_Centos防火墙设置与端口开放的方法
  10. UnicodeDecodeError: 'ascii' codec can't decode byte 0xf6 in position 0: ordinal not in range(128)