第七周--数据结构--队列数组
/*
*第七周--数据结构--队列数组
*Copyright (c) 2015 烟台大学计算机与控制工程学院
*All right reserved.
*文件名称:liqueue
*writer:罗海员
*date:2015年10月28日
*版本:V1.0.2
*操作系统:windows7
*运行环境:VC6.0
*问题描述:创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。
输入若干个正整数,以数字0作为结束。设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中。
最后输出所有的非空队列。
*输入描述:任意输入,以0为止。
*算法库包括三个文件:
头文件:liqueue.h 包含定义顺序表数据结构的代码、宏定义、要实现算法的函数的声明;
源文件:main.cpp 包含实现各种算法的函数的定义
函数运算:liqueue.cpp 包含各类函数运算
*程序输出:
*/
#include"liqueue.h"
void InitQueue(LiQueue *&q) //初始化链队
{
q=(LiQueue *)malloc(sizeof(LiQueue));
q->front=q->rear=NULL;
}
void DestroyQueue(LiQueue *&q) //销毁链队
{
QNode *p=q->front,*r; //p指向队头数据节点
if (p!=NULL) //释放数据节点占用空间
{
r=p->next;
while (r!=NULL)
{
free(p);
p=r;
r=p->next;
}
}
free(p);
free(q); //释放链队节点占用空间
}
bool QueueEmpty(LiQueue *q) //判断链队是否为空
{
return(q->rear==NULL);
}
int QueueLength(LiQueue *q) //返回队列中数据元素个数
{
int n=0;
QNode *p=q->front;
while (p!=NULL)
{
n++;
p=p->next;
}
return(n);
}
void enQueue(LiQueue *&q,ElemType e) //入队
{
QNode *p;
p=(QNode *)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
if (q->rear==NULL) //若链队为空,则新节点是队首节点又是队尾节点
q->front=q->rear=p;
else
{
q->rear->next=p; //将*p节点链到队尾,并将rear指向它
q->rear=p;
}
}
bool deQueue(LiQueue *&q,ElemType &e) //出队
{
QNode *t;
if (q->rear==NULL) //队列为空
return false;
t=q->front; //t指向第一个数据节点
if (q->front==q->rear) //队列中只有一个节点时
q->front=q->rear=NULL;
else //队列中有多个节点时
q->front=q->front->next;
e=t->data;
free(t);
return true;
}
</span>
#include "liqueue.h"
int main()
{
int i, a;
LiQueue *qu[N]; //定义队列指针数组
for (i=0; i<N; i++)
InitQueue(qu[i]); //初始化队列
//为队列中加入值
printf("输入若干正整数,以0结束: ");
scanf("%d", &a);
while(a)
{
enQueue(qu[a%10], a);
scanf("%d", &a);
}
//输出各个队列
printf("按个位数整理到各个队列中后,各队列出队的结果是: \n");
for (i=0; i<N; i++)
{
printf("qu[%d]: ", i);
while(!QueueEmpty(qu[i]))
{
deQueue(qu[i], a);
printf("%d ", a);
}
printf("\n");
}
//销毁各个队列
for (i=0; i<N; i++)
DestroyQueue(qu[i]);
return 0;
}
#ifndef LIQUEUE_H_INCLUDED
#define LIQUEUE_H_INCLUDED
#include <stdio.h>
#include <malloc.h>
#define N 10
typedef int ElemType;
typedef struct qnode
{
ElemType data;
struct qnode *next;
} QNode; //链队数据结点类型定义
typedef struct
{
QNode *front;
QNode *rear;
} LiQueue; //链队类型定义
void InitQueue(LiQueue *&q); //初始化链队
void DestroyQueue(LiQueue *&q); //销毁链队
bool QueueEmpty(LiQueue *q); //判断链队是否为空
int QueueLength(LiQueue *q); //返回队列中数据元素个数
void enQueue(LiQueue *&q,ElemType e); //入队
bool deQueue(LiQueue *&q,ElemType &e); //出队
#endif // LIQUEUE_H_INCLUDED</span>
/*
总结:1.判断链队是否为空 一直伴随着我们
2.释放链队节点占用空间 亦不容小觑
3.入队和出队的程序为本片的中心
*/
输出结果如下:
第七周--数据结构--队列数组相关推荐
- 数据结构-队列-数组队列
自定义队列 文章目录 自定义队列 数组队列 简述: 数组环形队列 数组队列 简述: 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图, 其中 maxSize 是该队列的最大 ...
- 数据结构--队列(数组)的一种实现
单向队列(数组实现) package mainimport ("errors""fmt""os" )//队列是一种重要的数据结构,应用也相对 ...
- 第七周:字符串 + 数组 + 指针
1.字符串中的字符删除 题目: 分别用字符数组或字符指针做函数参数,在字符串中删除与某字符相同的字符. void Delete1(char s[ ], char ch); void Delete2(c ...
- 数据结构上机实践第七周项目4 - 队列数组
/* copyright (t) 2017,烟台大学计算机学院 *All rights reserved. *文件名称:1.cpp *作者:田长航 *完成日期:2016年10月14日 *版本号:v1. ...
- 第七周 项目四-队列数组
/* Copyright (c)2017,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第7周项目项目4 - 队列数组.cpp 作 者:孙仁圆 完成日期:2017年 ...
- 第七周项目四—队列数组
/* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第7周项目项目4 - 队列数组.cpp ...
- 第七周实践项目4 队列数组
创建10个队列,分别编号为0-9(处理为队列数组,编号即下标).输入若干个正整数,以数字0作为结束.设输入的值为x,其个位数字的大小为i,则将x插入到编号为i的队列中.最后输出所有的非空队列. 要求将 ...
- 20172316 2017-2018-2《程序设计与数据结构》第七周学习总结
20172316 2017-2018-2<程序设计与数据结构>第七周学习总结 教材学习内容总结 继承 定义:继承就是从现有类派生新类的过程. 继承具有单向性(马都是哺乳动物,哺乳动物不都是 ...
- 20162329张旭升 2016-2017-2 《程序设计与数据结构》第七周学习总结
20162329张旭升 2016-2017-2 <程序设计与数据结构>第七周学习总结 教材学习内容总结 通过继承实现多态:若两个类是is-a关系,将子类对象向上转型为父类后该变量就可以实现 ...
最新文章
- day 01 ————立志运维的第一天开始,承若书!
- [codeigniter]CI中使用pChart绘制图表,已测通过
- Spring+Hibernate的典型配置
- 世界上最奇特的国界线,万万没想到...
- 推荐系统(4)-逻辑回归LR、POLY2、FM、FFM
- JMeter如何和Charles进行接口测试
- Windows 与 Linux 通过Xshell 文件互传
- Customer Exit
- 真希望能夠統一一下接口
- oracle安装蓝屏_Windows下安装ORACLE RAC蓝屏无限重启
- 【控制工程】与控制工程密切相关的拉普拉斯变换
- C语言中将字符串转换为数字
- C#读写西门子PLC数据
- swift跳转到故事版的界面
- 用Python+matplotlib足球运动员的射门数据可视化(绘制散点图)
- 使用python将txt格式的数据转换为csv格式,读取csv数据前几行
- 计算机网络谢希仁第七版课后习题答案(第三章)
- 轮训、长轮训、长连接
- Word在试图打开文件时遇到错误,请尝试下列方法:检查文档或驱动器的文件权限 确保有足够的内存和磁盘空间 用文本恢器打开文件
- Cesium空间数据的管理
热门文章
- html css学习笔记~ 基础知识和页面显示的四个区域内容及display:flex 等常用的一些命令(手画)
- 如何选择指针中置空?NULL, nullptr, 0?
- 金融行业 | 电子银行系统性能优化解决方案 1
- 【Microsoft Azure 的1024种玩法】五十. 通过Azure文件共享将Azure File 挂载到本地机器实现文件实时共享
- H5+CSS实现三级菜单(包括水平、垂直菜单和网页架构)
- Python: SQLAlchemy 处理 PostgreSQL on conflict
- heroku部署nodejs+express
- 我与小娜(13):LIGO是什么组织?
- char型变量声明java_java中变量的声明和变量的类型
- SHP转换为SLPK