用数组实现队列:
定义头文件:
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