问题及答案
/*队列算法:队首删掉,第二个数放队尾,反复直到最后*/
#include<stdio.h>
int main()
{
int a[100]={0,6,3,1,7,5,8,9,2,4};
int head,tail,i,n;
//初始化队列
head=1;
tail=10;
while(head<tail)//循环条件是队列不为空
{
printf("%d",a[head]);
head++;//队首出队
a[tail]=a[head];
tail++;//新队首放到队尾
head++;//再将队首出队
}
getchar();getchar();
return 0;
}
/*同上,用队列封装结构体求解,
哪里出错了,为何结果不对?*/
#include<stdio.h>
struct queue
{
int date[100];
int head;
int tail;
};
int main()
{
struct queue a;
int i;
a.head=1;
a.tail=1;//初始化为空
for(i=1;i<=9;i++)
{
scanf("%d",&a.date[a.tail]);//将下一个元素放入数组
a.tail++;
}
while(a.head<a.tail)
{
printf("%d",&a.date[a.head]);
a.head++;
a.date[a.tail]=a.date[a.head];
a.tail++;
a.head++;
}
getchar();getchar();
return 0;
}