您的位置:首页 > 理论基础 > 数据结构算法

用最简单的数组去实现队列

2016-12-20 23:15 246 查看

用数组去实现队列

在上一节中我们是用数组去实现了客栈的功能,那么我们在这节中学习如何用数组去实现队列的功能

队列是一种先进先出的数据结构(fisrt-in-first-out)
队列之允许在后端进行插入操作,在前端进行删除操作。
利用数组按下表进行顺序存储,删除,插入元素的特点,可在数组的末尾插入元素,在数组的首部删除元素,这样可以实现用数组实现队列的功能


头文件定义的代码:
#ifndef  __QUEUE_H_
#define __QUEUE_H_

#define MAX_NUM 100

int is_empty();

int is_full();

int pop_queue();

void push_queue(int element);

int getQueueEnd();

int getQueueTop();

#endif


queue.c文件的实现:
#include"queue.h"

int queueElements [MAX_NUM];

unsigned int position = 0;

static void removeQueueTop(int index);

int is_empty(){
return position == 0;
}

int is_full(){

return position >= MAX_NUM;

}

int pop_queue(){
if(is_empty()){
return 0;
}

int element = queueElements[0];
removeQueueTop(0);
position--;

return element;
}

static void removeQueueTop(int index){
int i;
for(i= index; i< position-1 ; i++){
queueElements[i] = queueElements[i+1];
}
}

void push_queue(int element){
if(is_full()){
return;


测试部分的代码:
include<stdio.h>
#include"queue.h"

int main(int argc,char* argv []){
push_queue(2);
push_queue(15);
push_queue(17);
push_queue(8);
printf("%d\n",pop_queue());
printf("%d\n",pop_queue());
push_queue(100);

printf("%d\n",pop_queue());

return 0;
}


最后的结果为:

2

15

17

注:小弟是一个C的初学者,如果有什么不对,或者需要指正的地方,请及时指正,以上两篇只是用最基础的C的数组来实现栈和队列,在后续会用指针的用法对其进行更深层次的优化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 存储