栈和队列好像都是在一起的,呵呵。
队列是先进先出,算法导论这个解释还把这个数组弄成环了,真纠结,只写了代码,不知道用处,先放着。呵呵
而且,自己写的判断函数觉得有点问题,那个如果出错的话,怎么退出捏。。应该在主函数里面加个判断才是。懒得弄了。我觉得要是知道长度就不会溢出了。额。。
int CheckDe() //判断队列是否已满
{
if(head - tail == 1)
return 1;
return 0;
}
void EnQueue( int x) // 入队
{
if( CheckDe() )
printf("Error!/n");
else
{
Q[tail] = x;
if( tail == N)
tail = 0;
else
tail++;
}
}
int DeQueue() //出队
{
int x;
if( CheckEn() )
printf("Error!/n");
else
{
x = Q[head];
if( head == N)
head = 0;
else
head++;
return x;
}
}
int main(void)
{
int x,temp;
printf("输入数字个数N:");
scanf("%d",&N);
printf("输入N个数,以0结束:/n");
while(scanf("%d",&x)!=EOF && x)
{
EnQueue(x);
}
temp = N;
while( temp-- )
printf("%d ",DeQueue());
system("pause");
return 0;
}