队列的顺序存储
来源:互联网 发布:《算法》读书笔记 编辑:程序博客网 时间:2024/05/17 01:00
实现的队列的顺序存储,直接附上代码:
实现功能:
1.初始化
2.输入
3.输出
4.判断队列是不是为空
5.判断队列非满
#include <stdio.h>#include <stdlib.h>#include <Windows.h>#define MAXSIZE 1typedef struct{int iData[MAXSIZE];int front, rear;int num;}sQueue;// 初始化int initQueue(sQueue *(&queue)){queue = (sQueue *)malloc(sizeof(sQueue)); //申请空间if(queue == NULL) return 0; //返回失败else{queue->front = MAXSIZE;queue->rear = MAXSIZE;queue->num = 0;return 1; //返回成功}}int inputQueue(sQueue *(&queue), int x){if(queue->num == MAXSIZE){printf("输入队列已满\n");system("pause");return 0;}else{//队列插入元素queue->rear = (queue->rear+1)%MAXSIZE;queue->iData[queue->rear] = x;queue->num++;return 1;}}int outputQueue(sQueue *queue, int x){if(queue->num == 0){printf("队空\n");return 0; //输出失败}else{queue->front = (queue->front+1)%MAXSIZE;x = queue->iData[queue->front];queue->num--;return 1;//输出成功}}int emptyQueue(sQueue *queue){if(queue->num == 0){printf("队空\n");return 1;//队空}return 0;//队有元素}int maxQueue(sQueue *queue){queue->rear = (queue->rear+1)%MAXSIZE;if(queue->front == queue->rear){printf("队满,插入失败\n");system("pause");return 1;}queue->rear = (queue->rear-1)%MAXSIZE;return 0;//队非满}
函数中使用局部变量不能被赋值,如果要将mian方法中的变量,在外函数中成功赋值,需要的是它的地址,或者是使用引用。
上面的代码只实现的是结果的输出没有实现节点移动,下面给出代码:
typedef struct{int iData[MAXSIZE];int front, rear;int num;}sQueue;// 初始化int initQueue(sQueue *(&queue)){queue = (sQueue *)malloc(sizeof(sQueue)); //申请空间if(queue == NULL) return 0; //返回失败else{queue->front = MAXSIZE;queue->rear = MAXSIZE;queue->num = 0;return 1; //返回成功}}int inputQueue(sQueue *(&queue), int &x){if(queue->num == MAXSIZE){printf("输入队列已满\n");system("pause");return 0;}else{//队列插入元素queue->rear = (queue->rear+1)%MAXSIZE;queue->iData[queue->rear] = x;queue->num++;return 1;}}int outputQueue(sQueue *(&queue), int &x){if(queue->num == 0){printf("队空\n");queue->front = MAXSIZE;queue->rear = MAXSIZE;return 0; //输出失败}else{queue->front = (queue->front+1)%MAXSIZE;x = queue->iData[queue->front];queue->num--;return 1;//输出成功}}int emptyQueue(sQueue *queue){if(queue->num == 0){printf("队空\n");return 1;//队空}return 0;//队有元素}int maxQueue(sQueue *queue){if(queue->front == (queue->rear+1)%MAXSIZE && queue->front == MAXSIZE){printf("队满,插入失败\n");system("pause");return 1;}return 0;//队非满}
0 0
- 队列的顺序存储
- 队列的顺序存储
- 队列的顺序存储
- 队列的顺序存储
- 队列的顺序存储
- 队列的顺序存储
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 队列的顺序存储结构
- 循环队列的顺序存储
- 队列的顺序存储结构
- 循环队列的顺序存储
- 队列的顺序存储API
- 队列的顺序存储实现
- 队列的顺序存储结构
- 004 队列的顺序存储
- 数据结构队列的顺序存储
- b70u.biri1q.xyz
- 致自己——独自走
- 【线段树】 SPOJ 2713 Can you answer these queries IV
- 桶排序
- libevent逻辑处理图
- 队列的顺序存储
- eclipse中查看自己更改的代码跟svn中代码的比较
- 黑马程序员_IO中其他流对象
- <<不能承受的生命之轻>>
- datatable1.10服务器断分页
- 信管--小结篇
- 黑马程序员_GUI概述
- 网管--小结篇
- 数原--小结篇