主题:[原创]循环队列运算实现
哪位高手帮我填空?
#include <stdio.h>
#define MAXLEN 10
typedef char DataType;
typedef struct
{
DataType* Q; /*数据存储区首地址*/
int front,rear; /*队头、队尾指针*/
}cycQue; /*循环队*/
void InitCycQue(CycQue* sp)
{
xp->Q=(DataType*)malloc(MAXLEN*sizeof(DataType));
if(sp->Q==NULL)
{
printf("\t\t\t内存分配错误\n");
}
sp->fo\ront=sp->rear=0;
printf("\t\t\t内存分配成功\n");
}
int InsertCycQue(CycQue* sp,DataType x)
{
if((sp->rear+1)%MAXLEN==sp->front)
{
printf("\t\t\t队满!不能再插入元素\n");
return 0; /*队满不能入队*/
}
else
{
sp->rear=(sp->rear+1)%MAXLEN;
sp->Q[sp->rear]=x;
return 1; /*入队完成*/
}
}
int ExitCycQue(CycQue* sp,DataType x) /*将循环队列的队首元素出队,值送入x */
{
printf("\t\t\t请您输入程序代码!\n");
}
int LenCycQue(CycQue* sp) /*求循环队列的长度*/
{
printf("\t\t\t请您输入程序代码!\n");
}
void ShowCycQue(CycQue* sp)
{
int i;
printf("\n\t\t\t显示循环队列的所有元素:");
if (sp->front==sp->rear)
printf("\n\t\t\t循环队列为空!\n");
else
{
printf("\n\t\t");
i=(sp->front+1)%MAXLEN;
while(i<=sp->rear)
{
printf("\t%C",sp->Q[i]);
i=i+1o%MAXLEN;
}
}
}
main()
{
CycQue sp;
int j=1;
char choice,x;
while(j)
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n\t\t\t循 环 队 列\n;");
printf("\n\t\t\t* 1------------队列初始化 *");
printf("\n\t\t\t* 2------------进 队 *");
printf("\n\t\t\t* 3------------出 队 *");
printf("\n\t\t\t* 4------------求 队 长 *");
printf("\n\t\t\t* 5------------显示 队列 *");
printf("\n\t\t\t* 6------------退 出 *");
printf("\n\t\t\t***************************************");
printf("\n\t\t\t请选择菜单号:0-5...");
scanf("%c",&choice);
getchar();
if (choice=='1')
InitCycQue(&sp);
else if(choice=='2')
{
printf("\n\t\t\t请输入需要插入的x的值:");
scanf("%c",&x);getchar();
InsertCycQue(&sp,x);
}
else if(choice=='3')
{ExitCycQue(&sp,&x);}
else if (choice=='4')
LenCycQue(&sp);
else if (choice=='5')
ShowCycQue(&sp);
else if (choice=='0')
{
j=0;
printf("\t\t\t程序结束!\n");
}
else printf("\n\t\t\t输入错误!请重新输入!\n");
}
}
#include <stdio.h>
#define MAXLEN 10
typedef char DataType;
typedef struct
{
DataType* Q; /*数据存储区首地址*/
int front,rear; /*队头、队尾指针*/
}cycQue; /*循环队*/
void InitCycQue(CycQue* sp)
{
xp->Q=(DataType*)malloc(MAXLEN*sizeof(DataType));
if(sp->Q==NULL)
{
printf("\t\t\t内存分配错误\n");
}
sp->fo\ront=sp->rear=0;
printf("\t\t\t内存分配成功\n");
}
int InsertCycQue(CycQue* sp,DataType x)
{
if((sp->rear+1)%MAXLEN==sp->front)
{
printf("\t\t\t队满!不能再插入元素\n");
return 0; /*队满不能入队*/
}
else
{
sp->rear=(sp->rear+1)%MAXLEN;
sp->Q[sp->rear]=x;
return 1; /*入队完成*/
}
}
int ExitCycQue(CycQue* sp,DataType x) /*将循环队列的队首元素出队,值送入x */
{
printf("\t\t\t请您输入程序代码!\n");
}
int LenCycQue(CycQue* sp) /*求循环队列的长度*/
{
printf("\t\t\t请您输入程序代码!\n");
}
void ShowCycQue(CycQue* sp)
{
int i;
printf("\n\t\t\t显示循环队列的所有元素:");
if (sp->front==sp->rear)
printf("\n\t\t\t循环队列为空!\n");
else
{
printf("\n\t\t");
i=(sp->front+1)%MAXLEN;
while(i<=sp->rear)
{
printf("\t%C",sp->Q[i]);
i=i+1o%MAXLEN;
}
}
}
main()
{
CycQue sp;
int j=1;
char choice,x;
while(j)
{
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n\t\t\t循 环 队 列\n;");
printf("\n\t\t\t* 1------------队列初始化 *");
printf("\n\t\t\t* 2------------进 队 *");
printf("\n\t\t\t* 3------------出 队 *");
printf("\n\t\t\t* 4------------求 队 长 *");
printf("\n\t\t\t* 5------------显示 队列 *");
printf("\n\t\t\t* 6------------退 出 *");
printf("\n\t\t\t***************************************");
printf("\n\t\t\t请选择菜单号:0-5...");
scanf("%c",&choice);
getchar();
if (choice=='1')
InitCycQue(&sp);
else if(choice=='2')
{
printf("\n\t\t\t请输入需要插入的x的值:");
scanf("%c",&x);getchar();
InsertCycQue(&sp,x);
}
else if(choice=='3')
{ExitCycQue(&sp,&x);}
else if (choice=='4')
LenCycQue(&sp);
else if (choice=='5')
ShowCycQue(&sp);
else if (choice=='0')
{
j=0;
printf("\t\t\t程序结束!\n");
}
else printf("\n\t\t\t输入错误!请重新输入!\n");
}
}