C++插入及取出队列数据可以任意修改设定的队列长度
来源:互联网 发布:ipad图片分类软件 编辑:程序博客网 时间:2024/05/21 08:47
// queue.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
/*
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}*/
#include<stdio.h>
#include<malloc.h> //包含了malloc函数
/*
*循环队列,用数组实现
*/
//队列结构体定义
#define QueueLenth 12 //改变队列结构长度
typedef struct Queue
{
int * pBase; //用于动态分配内存,pBase保存数组的首地址
int front; //指向头结点
int rear; //指向最后一个元素的下一结点
} QUEUE;
//函数声明
/*
*初始化函数的实现
*/
void initQueue(QUEUE * pQueue)
{
//分配内存
pQueue->pBase = (int *)malloc(sizeof(int) * 12); //分配6个int型所占的空间
pQueue->front = 0; //初始化时,front和rear值均为0
pQueue->rear = 0;
return;
}
/*
*判断队列是否满的函数的实现
*/
bool isFull(QUEUE * pQueue)
{
if((pQueue->rear+1) % QueueLenth == pQueue->front) //队列满
return true;
else
return false;
}
/*
*判断队列是否为空函数的实现
*/
bool isEmpty(QUEUE * pQueue)
{
if(pQueue->front == pQueue->rear)
return true;
else
return false;
}
/*
*入队函数的实现
*/
bool enQueue(QUEUE * pQueue, int value)
{
if(isFull(pQueue))
{
printf("队列已满,不能再插入元素了!\n");
return false;
}
else
{
//向队列中添加新元素
pQueue->pBase[pQueue->rear] = value;
//将rear赋予新的合适的值
pQueue->rear = (pQueue->rear+1) % QueueLenth;
return true;
}
}
/*
*出队函数的实现
*/
bool outQueue(QUEUE * pQueue, int * pValue)
{
//如果队列为空,则返回false
if(isEmpty(pQueue))
{
printf("队列为空,出队失败!\n");
return false;
}
else
{
*pValue = pQueue->pBase[pQueue->front]; //先进先出
pQueue->front = (pQueue->front+1) % QueueLenth; //移到下一位置
return true;
}
}
/*
*遍历队列的函数实现
*/
void traverseQueue(QUEUE * pQueue)
{
int i = pQueue->front; //从头开始遍历
printf("遍历队列:\n");
while(i != pQueue->rear) //如果没有到达rear位置,就循环
{
printf("%d ", pQueue->pBase[i]);
i = (i+1) % QueueLenth; //移到下一位置
}
printf("\n");
return;
}
/*
*主程序
*/
int main(int argc, char* argv[])
{
int value; //用于保存出队的元素
//创建队列对象
QUEUE queue;
//调用初始化队列的函数
initQueue(&queue);
//调用出队函数
enQueue(&queue, 1);
enQueue(&queue, 2);
enQueue(&queue, 3);
enQueue(&queue, 4);
enQueue(&queue, 5);
enQueue(&queue, 6);
enQueue(&queue, 7);
enQueue(&queue, 8);
enQueue(&queue, 9);
traverseQueue(&queue);
//调用出队函数
if(outQueue(&queue, &value))
{
printf("出队一次,元素为:%d\n", value);
}
traverseQueue(&queue);
if(outQueue(&queue, &value))
{
printf("出队一次,元素为:%d\n", value);
}
traverseQueue(&queue);
getchar();
return 0;
}
//
#include "stdafx.h"
/*
int main(int argc, char* argv[])
{
printf("Hello World!\n");
return 0;
}*/
#include<stdio.h>
#include<malloc.h> //包含了malloc函数
/*
*循环队列,用数组实现
*/
//队列结构体定义
#define QueueLenth 12 //改变队列结构长度
typedef struct Queue
{
int * pBase; //用于动态分配内存,pBase保存数组的首地址
int front; //指向头结点
int rear; //指向最后一个元素的下一结点
} QUEUE;
//函数声明
/*
*初始化函数的实现
*/
void initQueue(QUEUE * pQueue)
{
//分配内存
pQueue->pBase = (int *)malloc(sizeof(int) * 12); //分配6个int型所占的空间
pQueue->front = 0; //初始化时,front和rear值均为0
pQueue->rear = 0;
return;
}
/*
*判断队列是否满的函数的实现
*/
bool isFull(QUEUE * pQueue)
{
if((pQueue->rear+1) % QueueLenth == pQueue->front) //队列满
return true;
else
return false;
}
/*
*判断队列是否为空函数的实现
*/
bool isEmpty(QUEUE * pQueue)
{
if(pQueue->front == pQueue->rear)
return true;
else
return false;
}
/*
*入队函数的实现
*/
bool enQueue(QUEUE * pQueue, int value)
{
if(isFull(pQueue))
{
printf("队列已满,不能再插入元素了!\n");
return false;
}
else
{
//向队列中添加新元素
pQueue->pBase[pQueue->rear] = value;
//将rear赋予新的合适的值
pQueue->rear = (pQueue->rear+1) % QueueLenth;
return true;
}
}
/*
*出队函数的实现
*/
bool outQueue(QUEUE * pQueue, int * pValue)
{
//如果队列为空,则返回false
if(isEmpty(pQueue))
{
printf("队列为空,出队失败!\n");
return false;
}
else
{
*pValue = pQueue->pBase[pQueue->front]; //先进先出
pQueue->front = (pQueue->front+1) % QueueLenth; //移到下一位置
return true;
}
}
/*
*遍历队列的函数实现
*/
void traverseQueue(QUEUE * pQueue)
{
int i = pQueue->front; //从头开始遍历
printf("遍历队列:\n");
while(i != pQueue->rear) //如果没有到达rear位置,就循环
{
printf("%d ", pQueue->pBase[i]);
i = (i+1) % QueueLenth; //移到下一位置
}
printf("\n");
return;
}
/*
*主程序
*/
int main(int argc, char* argv[])
{
int value; //用于保存出队的元素
//创建队列对象
QUEUE queue;
//调用初始化队列的函数
initQueue(&queue);
//调用出队函数
enQueue(&queue, 1);
enQueue(&queue, 2);
enQueue(&queue, 3);
enQueue(&queue, 4);
enQueue(&queue, 5);
enQueue(&queue, 6);
enQueue(&queue, 7);
enQueue(&queue, 8);
enQueue(&queue, 9);
enQueue(&queue, 10);
enQueue(&queue, 11);
//调用遍历队列的函数traverseQueue(&queue);
//调用出队函数
if(outQueue(&queue, &value))
{
printf("出队一次,元素为:%d\n", value);
}
traverseQueue(&queue);
if(outQueue(&queue, &value))
{
printf("出队一次,元素为:%d\n", value);
}
traverseQueue(&queue);
getchar();
return 0;
}
阅读全文
0 0
- C++插入及取出队列数据可以任意修改设定的队列长度
- 队列的创建,摧毁,插入以及取出
- 修改 IIS 队列长度
- 修改 IIS 队列长度
- 修改listen监听的队列长度
- 修改消息队列 最大长度
- CentOS 修改网卡队列长度
- 循环队列的实现,插入,删除,打印,求长度
- 测试队列的长度
- 修改打印最长行的MAIN函数,使之可以打印任意长度<The C Programming Language>课后习题
- 实现一个可以在队列满时,将溢出的部分缓存入文件,待空闲时取出的队列
- 队列取出的对象为空,解决办法
- 队列的结构体,插入及删除(绝对正确)
- 如何修改MSSQL中TEXT类型的长度及用JDBC插入该类型数据的方法
- 用C语言实现的一个可以计算任意长度整数加法的小程序
- C语言中可以求任意一个int型数组的长度吗?
- C程序设计语言练习1-16 修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多的打印文本
- 数组实现的队列(限制最大长度)的head、tail指针的修改方法。
- 栈的入栈/出栈操作
- Struts_ActionContext_valuestack解惑
- POJ 2420 模拟退火 解题报告
- Kotlin与Swift 从零开始(一)基础语法
- MPAndroidChart MarkerView的精确点击问题解决方案
- C++插入及取出队列数据可以任意修改设定的队列长度
- Java Web入门必知
- okhttp框架解析与应用
- JAVA的23种设计模式---代理模式(一)
- io流
- 标准C语言头文件
- Linux性能调优之I/O调优
- C++链式栈的模版
- Java 8 Stream 原理