LinkQueue.h
#include<stdio.h>
#include<malloc.h>
#define MaxSize 100//队列容量
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];//保存队中元素
int front,rear;//对头和队尾指针
}SqQueue;
void InitQueue(SqQueue &sq)//初始化队列
{
sq.rear=sq.front=0;//指针初始化
}
void DestroyQueue(SqQueue sq)//销毁队
{ }
int EnQueue(SqQueue &sq,ElemType x)//进队
{
if((sq.rear+1)%MaxSize==sq.front)
return 0;
sq.rear=(sq.rear+1)%MaxSize;
sq.data[sq.rear]=x;
return 1;
}
int DeQueue(SqQueue &sq,ElemType &x)//出队
{
if(sq.rear==sq.front)
return 0;
sq.front=(sq.front+1)%MaxSize;
x=sq.data[sq.front];
return 1;
}
int QueueEmpty(SqQueue sq)//判断队空
{
if(sq.rear==sq.front)
return 1;
else
return 0;
}
void Numberoff(int n)
{
int i,count=1;//count用来记录第几个元素
SqQueue sq;
InitQueue(sq);
for(i=1;i<=n;i++)//从1到n进队
{
EnQueue(sq,i);
}
printf("最终出列顺序为:");
while(!QueueEmpty(sq))//判断队空
{
DeQueue(sq,i);//出队
if(count%2==0)//偶数元素进队
EnQueue(sq,i);
else
printf("%d ",i);//输出奇数元素
count++;
}
printf("\n");
DestroyQueue(sq);
}
主函数
#include<stdio.h>
#include<malloc.h>
#include"LinkQueue.h"
int main()
{
int n;
printf("请输入共有几人:");
scanf("%d",&n);
Numberoff(n);
return 0;
}