循环队列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了循环队列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1730字,纯文字阅读大概需要3分钟。
内容图文
# include <stdio.h>
# include <malloc.h>
typedef struct Queue
{
int *pBase;
int front;
int rear;
}QUEUE;
void init( QUEUE * );
bool en_queue( QUEUE *, int val );//入队
void traverse_queue( QUEUE * );
bool full_queue( QUEUE * );
bool out_queue( QUEUE *, int * );//出队
bool empty_queue( QUEUE * );
int main( void )
{
QUEUE Q;
int val;
init( &Q );
en_queue( &Q, 1 );
en_queue( &Q, 2 );
en_queue( &Q, 3 );
en_queue( &Q, 4 );
en_queue( &Q, 5 );
en_queue( &Q, 6 );
en_queue( &Q, 7 );
en_queue( &Q, 8 );
en_queue( &Q, 9 );
traverse_queue( &Q );
if ( out_queue( &Q, &val ) )
{
printf( "出队成功,队列出队的元素是%d\n", val );
}
else
{
printf( "出队失败!\n" );
}
traverse_queue( &Q );
return 0;
}
void init( QUEUE *pQ )
{
pQ->pBase = ( int * )malloc( sizeof( int )*6 );
pQ->front = 0;
pQ->rear = 0;
}
bool full_queue( QUEUE *pQ )
{
if( ( pQ->rear + 1 ) % 6 == pQ->front )
{
return true;
}
else
return false;
}
bool en_queue( QUEUE *pQ, int val )
{
if( full_queue( pQ ) )
{
return false;
}
else
{
pQ->pBase[pQ->rear] = val;
pQ->rear = ( pQ->rear + 1 ) % 6;
return true;
}
}
void traverse_queue( QUEUE *pQ )
{
int i = pQ->front;
while( i != pQ->rear )
{
printf( "%d ", pQ->pBase[i] );
i = ( i + 1 ) % 6;
}
printf("\n");
return;
}
bool empty_queue( QUEUE *pQ )
{
if( pQ->front == pQ->rear )
return true;
else
return false;
}
bool out_queue( QUEUE *pQ, int *pVal )
{
if( empty_queue( pQ ) )
{
return false;
}
else
{
*pVal = pQ->pBase[pQ->front];
pQ->front = (pQ->front + 1) % 6;
return true;
}
}
本文出自 “Linux运维” 博客,请务必保留此出处http://2853725.blog.51cto.com/2843725/1379905
原文:http://2853725.blog.51cto.com/2843725/1379905
内容总结
以上是互联网集市为您收集整理的循环队列全部内容,希望文章能够帮你解决循环队列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。