数据结构代码实现(循环队列的实现,数组)

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define MAXQSIZE 6
typedef struct QUEUE
{
	 
	 int	*pBase;
	 int	front;
	 int	rear;
}QUEUE, *PQUEUE;
void	init_queue( PQUEUE );
bool	traverse_queue( PQUEUE );
bool	en_queue( PQUEUE, int val );
bool	de_queue( PQUEUE, int *val );
bool	is_full( PQUEUE );
bool	is_empty( PQUEUE );
int main()
{
	 QUEUE	q;
	 int 	val;
	 init_queue( &q );
	 en_queue( &q, 5 );
	 en_queue( &q, 4 );
	 en_queue( &q, 3 );
	 en_queue( &q, 2 );
	 en_queue( &q, 1 );
	 de_queue( &q, &val );
	 printf( "you delete is %d\n", val );
	 traverse_queue( &q );
	 
	 
	 
	 
		 return 0;
}


void init_queue( PQUEUE pQ )
{
	 pQ->pBase = (int *) malloc( sizeof(int) * MAXQSIZE );
	 if( NULL == pQ->pBase )
	  {
		 	printf( "malloc failure\n" );
		 	exit( -1 );
		 
	}else   {
		 pQ->front = 0;
		    pQ->rear = 0;
	}
	 return;
}


bool is_empty( PQUEUE pQ )
{
	 if( pQ->rear == pQ->front )
	  return true;
	 else
	  return false;
}


bool is_full( PQUEUE pQ )
{
	 if( (pQ->rear + 1) % MAXQSIZE == pQ->front )
	  return true;
	 else
	  return false;
	 
}


bool traverse_queue( PQUEUE pQ )
{
	  if ( is_empty( pQ ) )
		  {
			 printf( "queue is empty\n" );
			 return false;
			 
		}
		  else
			  {
				   int i = pQ->front;
				   while ( i != pQ->rear )
					   {
						  printf( "%d  ", pQ->pBase[i] );
						  i++;
						  i = i % MAXQSIZE;
						  
					}
					 return true;
				 
				 
					 
			}
			}
			bool en_queue( PQUEUE pQ, int val )
			{
				 if( (is_full( pQ ) ) )
				  {
					  printf( "queue is full \n" );
					  return false;
					 
				}
				 else
					  {
					 pQ->pBase[pQ->rear]	= val;
					 pQ->rear		= (pQ->rear + 1) % MAXQSIZE;  
						 
				}
				 return true;
				 
					 
			}


			bool de_queue( PQUEUE pQ, int *val )
			{
				 if( is_empty( pQ ) )
				  {
					  printf( "queue is empty \n" );
					  return false;
					 
				}
				 else
					  {   
					      *val = pQ->pBase[pQ->front];
					      pQ->front = (pQ->front + 1) % MAXQSIZE;
					      
						      }
				 return true;
				 
			}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值