arrayQueue

用数组实现队列:

定义头文件:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define MAX_SIZE 10
 4 int queue[MAX_SIZE];
 5 int front=-1;
 6 int rear=-1;
 7 
 8 int IsFull(int queue[]);        //判断队列是否已满 
 9 int IsEmpty(int queue[]);        //判断队列是否为空 
10 void queueFull();                //队列满时抛出函数,并退出程序 
11 void queueEmpty();                 //队列为空时的函数 
12 void addQ(int queue[],int element);            //向队列中追加元素 
13 int deleteQ(int queue[]);                //取出队首元素 

各函数的具体实现:

 1 int IsFull(int queue[]){
 2     if(rear==MAX_SIZE-1)
 3         return 1;
 4     return 0; 
 5 } 
 6 int IsEmpty(int queue[]){
 7     if(front==rear)
 8         return 1;
 9     return 0; 
10 } 
11 void queueFull(){
12     fprintf(stderr,"Queue is full!");
13     exit(EXIT_FAILURE); 
14 } 
15 void queueEmpty(){
16     fprintf(stderr,"Queue is empty!");
17     exit(EXIT_FAILURE); 
18 } 
19 void addQ(int queue[],int element){
20     if(IsFull(queue))
21         queueFull(); 
22     queue[++rear] = element;
23 } 
24 int deleteQ(int queue[]){
25     if(IsEmpty(queue))
26         queueEmpty();
27     return queue[++front] ;
28 } 

用来测试的主函数(在devcpp中编译通过):

 1 int main(void)
 2 {
 3     int i=0;
 4     for(i=0;i<MAX_SIZE;i++) {
 5         addQ(queue,i+1); 
 6     } 
 7     for(i=0;i<MAX_SIZE;i++){ 
 8         printf("%d  ",deleteQ(queue));
 9     }
10      printf("%d\n",deleteQ(queue)); 
11 }

在抽象数据类型中有创建一个队列的函数,却不知道是怎么实现~~

                                                            2016-10-24     10:30:45

posted @ 2016-10-24 10:31  dtdyq  阅读(633)  评论(0编辑  收藏  举报