队列的顺序存储

来源:互联网 发布:《算法》读书笔记 编辑:程序博客网 时间: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
原创粉丝点击