/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:fhb Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <stdlib.h>
#define max 10
typedef struct queue_seq
{
int a[max];
int rear;
int front;
}Queue;
enum return_result {full_ok,full_no,empty_ok,empty_no,
enqueue_ok,enqueue_no,dequeue_ok,dequeue_no=-1};
void create_queue(Queue ** queue)
{
(*queue)=(Queue*)malloc(sizeof(Queue));
if((*queue) == NULL)
{
printf("creat error!\n");
exit(-1);
}
}
void init_queue(Queue ** queue)
{
(*queue)->rear = -1;
(*queue)->front = -1;
}
int is_full(Queue ** queue)
{
if((*queue)->front == -1&&(*queue)->rear == max - 1)
{
return full_ok;
}
return full_no;
}
int enqueue(Queue ** queue,int num)
{
if(is_full(queue) == full_ok)
{
printf("the queue is full!\n");
return enqueue_no;
}
if((*queue)->rear != max-1)
{
(*queue)->rear++;
(*queue)->a[(*queue)->rear] = num;
return enqueue_ok;
}
if((*queue)->front != -1)
{
int i;
for(i = (*queue)->front;i < (*queue)->rear;i++)
{
(*queue)->a[i] = (*queue)->a[(*queue)->front + 1+i];
}
(*queue)->rear -= (*queue)->front+1;
(*queue)->front = -1;
return enqueue_ok;
}
}
int is_empty(Queue ** queue)
{
if((*queue)->front == (*queue)->rear)
{
return empty_ok;
}
return empty_no;
}
int dequeue(Queue ** queue)
{
if(is_empty(queue) == empty_ok)
{
printf("the queue is empty!\n");
return dequeue_no;
}
return (*queue)->a[++((*queue)->front)];
}
int main()
{
Queue * queue;
int i,ret;
create_queue(&queue);
init_queue(&queue);
for(i = 0;i < max;i++)
{
enqueue(&queue,i);
printf("enter success!\n");
}
// enqueue(&queue,10);
for(i = 0;i < 5;i++)
{
ret = dequeue(&queue);
if(ret == dequeue_no)
{
break;
}
// printf("queue[%d]=%d\n",i,ret);
}
for(i = 0;i < 5;i++)
{
enqueue(&queue,i+10);
printf("enter success!\n");
}
for(i = 0;i < 5;i++)
{
ret = dequeue(&queue);
if(ret == dequeue_no)
{
break;
}
printf("queue[%d]=%d\n",i,ret);
}
//ret = dequeue(&queue);
//printf("%d",ret);
return 0;
copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:fhb Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <stdlib.h>
#define max 10
typedef struct queue_seq
{
int a[max];
int rear;
int front;
}Queue;
enum return_result {full_ok,full_no,empty_ok,empty_no,
enqueue_ok,enqueue_no,dequeue_ok,dequeue_no=-1};
void create_queue(Queue ** queue)
{
(*queue)=(Queue*)malloc(sizeof(Queue));
if((*queue) == NULL)
{
printf("creat error!\n");
exit(-1);
}
}
void init_queue(Queue ** queue)
{
(*queue)->rear = -1;
(*queue)->front = -1;
}
int is_full(Queue ** queue)
{
if((*queue)->front == -1&&(*queue)->rear == max - 1)
{
return full_ok;
}
return full_no;
}
int enqueue(Queue ** queue,int num)
{
if(is_full(queue) == full_ok)
{
printf("the queue is full!\n");
return enqueue_no;
}
if((*queue)->rear != max-1)
{
(*queue)->rear++;
(*queue)->a[(*queue)->rear] = num;
return enqueue_ok;
}
if((*queue)->front != -1)
{
int i;
for(i = (*queue)->front;i < (*queue)->rear;i++)
{
(*queue)->a[i] = (*queue)->a[(*queue)->front + 1+i];
}
(*queue)->rear -= (*queue)->front+1;
(*queue)->front = -1;
return enqueue_ok;
}
}
int is_empty(Queue ** queue)
{
if((*queue)->front == (*queue)->rear)
{
return empty_ok;
}
return empty_no;
}
int dequeue(Queue ** queue)
{
if(is_empty(queue) == empty_ok)
{
printf("the queue is empty!\n");
return dequeue_no;
}
return (*queue)->a[++((*queue)->front)];
}
int main()
{
Queue * queue;
int i,ret;
create_queue(&queue);
init_queue(&queue);
for(i = 0;i < max;i++)
{
enqueue(&queue,i);
printf("enter success!\n");
}
// enqueue(&queue,10);
for(i = 0;i < 5;i++)
{
ret = dequeue(&queue);
if(ret == dequeue_no)
{
break;
}
// printf("queue[%d]=%d\n",i,ret);
}
for(i = 0;i < 5;i++)
{
enqueue(&queue,i+10);
printf("enter success!\n");
}
for(i = 0;i < 5;i++)
{
ret = dequeue(&queue);
if(ret == dequeue_no)
{
break;
}
printf("queue[%d]=%d\n",i,ret);
}
//ret = dequeue(&queue);
//printf("%d",ret);
return 0;
}