一、实验内容
1.采用顺序存储实现循环队列的初始化、入队、出队操作。
2.采用链式存储实现队列的初始化、入队、出队操作。
3.编写一个程序,使用两个链队q1和q2,用来分别存储由计算机随机产生的20个100以内的奇数和偶数,然后每行输出q1和q2的一个值,即奇数和偶数配对输出,直到任一队列为空为止。

顺序存储
代码实现:

#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100    //最大队列长度
typedef int ElemType;
typedef  struct{ElemType  data[MAXSIZE];int  front,rear; //队头、队尾
}SqQueue;
int InitQueue(SqQueue **Q)//初始化循环队列
{*Q=(SqQueue*)malloc(sizeof(SqQueue));if(!(*Q))return 0;(*Q)->front=(*Q)->rear=0;return 1;
}
int QueueEmpty(SqQueue Q)//判断队空
{return Q.front==Q.rear;
}
int QueueFull(SqQueue Q)//判断队满
{return (Q.rear+1)%MAXSIZE==Q.front;
}
int EnQueue(SqQueue *Q, ElemType e)//入队操作
{if(QueueFull(*Q))return 0;Q->data[Q->rear]=e;Q->rear=(Q->rear+1)%MAXSIZE;return 1;
}
int DeQueue (SqQueue *Q, ElemType *e)//出队操作
{if(QueueEmpty(*Q))return 0;*e=Q->data[Q->front];Q->front=(Q->front+1)%MAXSIZE;return 1;
}int main()
{SqQueue *Q;int i;InitQueue(&Q);EnQueue(Q,99);EnQueue(Q,6);EnQueue(Q,74);EnQueue(Q,56);EnQueue(Q,100);while(!QueueEmpty(*Q)){DeQueue(Q,&i);printf("%d ",i);}printf("\n");return 0;
}

程序演示:

链式存储:
代码实现:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAXSIZE 100    //最大队列长度
typedef int ElemType;typedef struct QNode
{ElemType data;struct QNode *next;
}QNode,*QueuePtr;typedef struct
{QueuePtr front;QueuePtr rear;
}LinkQueue;int InitQueue(LinkQueue *Q)//将Q初始化为一个空的链队列
{Q->front=Q->rear=(QNode*)malloc(sizeof(QNode));if(!Q->front)return 0;Q->front->next=NULL;return 1;
}int QueueEmpty(LinkQueue Q)//判断队空
{return Q.front==Q.rear;
}int EnQueue(LinkQueue *Q, ElemType e)//入队操作
{QNode *p=(QNode*)malloc(sizeof(QNode));if(!p)return 0;p->data=e;Q->rear->next=p;Q->rear=p;return 1;
}int DeQueue(LinkQueue *Q,ElemType *e)//出队操作
{QNode *p;if(QueueEmpty(*Q))return 0;p=Q->front->next;*e=p->data;Q->front->next=p->next;if(Q->rear==p)Q->rear=Q->front;free(p);return  1;
}int main()
{LinkQueue q1,q2;int i=0,j=0,num;InitQueue(&q1);InitQueue(&q2);srand((unsigned)time(NULL));while(i<20||j<20){num=rand()%100+1;if(num%2==0&&i<20){EnQueue(&q1,num);i++;}if(num%2!=0&&j<20){EnQueue(&q2,num);j++;}}while(!QueueEmpty(q1)&&!QueueEmpty(q2)){DeQueue(&q1,&i);DeQueue(&q2,&j);printf("%3d%3d\n",i,j);}return 0;
}

程序演示:

分析:队列程序需要判断队空,在顺序存储中用结构体专门定义两个个数据域存放队头和队尾元素的下标,链式存储中则直接定义队头队尾指针.

数据结构实验课_实验四 队列相关推荐

  1. 计算机调查应用表格,大学计算机实验课_调查报告_表格模板_应用文书.doc

    大学计算机实验课_调查报告_表格模板_应用文书 掠印食旗窄钙敬酮鲜补土寓戈行手彝实桨肇如苗抵讯辰蜜巨交连沈萧咖的哄铜邑冻芯淆咐俘搜挨傅得系魔湘厩辱极名刘卤绚檬跃隧阁豹钉悄捷勃扩置臼哀匿搏扦开衣即奎盼狙 ...

  2. 数据结构荣誉课-第一次实验-解题报告

    JLU-数据结构荣誉课-第一次实验-解题报告 一.重复计数 题目 思路 参考代码 二.报数游戏 题目 思路 参考代码 三.算术表达式计算 题目 思路 参考代码 四.最喜爱的序列 题目 思路 单调队列 ...

  3. 数据结构_C语言_实验一_线性结构 ——一元多项式求导

    文章目录 实验一 线性结构 1. 实验目的 2. 实验内容 3. 实验要求 4. 实验过程 (1) 问题描述 (2) 数据结构与算法设计 (3) 程序实现 (4) 实验结果 (5) 实验总结 实验一 ...

  4. 数据结构_C语言_实验二_树 ——还原二叉树

    文章目录 实验二 树 1. 实验目的 2. 实验内容 3. 实验要求 4. 实验过程 (1) 问题描述 (2) 数据结构与算法设计 (3) 程序实现 (4) 实验结果 (5) 实验总结 实验二 树 - ...

  5. python实验课_#012python实验课

    基础语法混乱 这是,在进行周四实验课程的时候,一直遇到的一个问题.写着写着,就往C语言的语法方向跑了,可以说之前我仅仅是对,python这种语言有着简单的了解,再加上一直在学习C语言所以很少投入时间, ...

  6. 数学实验课MATLAB实验报告一(题目+代码)

    目录 前言 程序设计部分题目 1.(1) 题目 代码 1.(2) 题目 代码 1.(3) 题目 代码 2. 题目 代码 作图部分题目 3. 题目 代码 4. 题目 代码 5. 题目 代码 符号运算部分 ...

  7. mysql备份与恢复实验报告_实验十一 MySQLl备份与恢复1

    实验十一MySQL备份与恢复 一.实验内容: 1. 使用SQL语句导入和导出表数据 2. 使用客户端工具备份还原数据库 3. 使用日志文件恢复数据库 二.实验项目:学生成绩数据库 创建用于学生成绩管理 ...

  8. hdfs的实验总结_实验2-熟悉常用的HDFS操作.doc

    本文档下载自 文库下载网, /doc/d52aebffbb0d4a7302768e9951e79b896802689c.html 实验2-熟悉常用的HDFS操作 实验2熟悉常用的HDFS操作 1实验目 ...

  9. 大一java实验课_JAVA实验课填空题集合.doc

    JAVA实验课填空题集合 说明:红色部分为填空部分,只供参考,如用与作弊,本非人概不负责,请注意喔! 废话到此!--苏嘉良上 实验2 4: 按要求把类 Russian里面代码补充完整并编译 publi ...

最新文章

  1. 那xxx.class.getName()為什麼能這樣寫?? 看了半天都快搞不清楚到底在程式中的example到底是class ? object ? 還是instance了
  2. django 内置 admin
  3. Node.js 框架设计及企业 Node.js 基础建设相关讨论
  4. LeetCode 1620. 网络信号最好的坐标
  5. 【Web API系列教程】3.3 — 实战:处理数据(建立数据库)
  6. [笔记][随笔]近期小结
  7. hashmap hash冲突怎么解决_让我再撸一次HashMap
  8. 前端开发必备之MDN文档
  9. 数据产品经理——数据指标
  10. 京东直营店和自营店有哪些区别?
  11. elementui组件中,树形组件的使用
  12. 15K的前端应届毕业生,就因为掌握了这些知识点!(前端企业级开发必备)
  13. 【Linux】创建、修改和删除用户(useradd | usermod | userdel)
  14. Mn0.15V2O5·nH2O锌离子电池正极材料的储锌性能/Co@CNTs催化改性MgH2|碳纳米管原位负载Co纳米颗粒(Co@CNTs)催化剂
  15. Linux详细安装教程(Centos)
  16. python random seed,python - 字符串重排:固定seed()下利用random.shuffle()简化代码
  17. 如何使用HTML5自定义数据属性以及原因
  18. 网站关键词优化方法有哪些
  19. SQL去重是用DISTINCT好,还是GROUP BY好?
  20. python编程工时计算公式_工作日、工作小时的一种非常简单的计算方式

热门文章

  1. [蓝奏云] 洛达AB153x_UT检测工具
  2. loj10155:数字转换:树的直径问题
  3. cannot import name ‘gcd’ from ‘fractions’
  4. 关于ubuntu系统不显示wifi图标或WiFi无法连接问题解答
  5. 算法---逆向旋转矩阵法求解矩阵绕圈走
  6. 【深度学习】01 - 图像识别
  7. dede首页调用全站tag
  8. Acm1——拉里今年毕业了,终于找到了一份工作。
  9. oracle 拉里 网线通道,拉里.埃里森:Oracle云计算服务进入超速增长阶段
  10. 2017cad光标大小怎么调_如何更改CAD光标大小及颜色?