回 帖 发 新 帖 刷新版面

主题:[原创]循环队列运算实现

哪位高手帮我填空?
#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");
}
}

回复列表 (共15个回复)

沙发

哪位高手帮我填空?
#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;                  /*sp->front=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;                    /* Q不是一个数组类型吧*/
  return 1;
}
}
int ExitCycQue(CycQue* sp,DataType 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");
}
}

怎么一点注译都没有呀
好难看哦,
还好程序不太难,不过我没有改,只是随便看了下,
我想有人会来答的

板凳

你也把空写出来啊

3 楼

看不懂啊,
跟内存 有什么关系啊

还有那个 Q 是 什么东西啊

4 楼


1楼的帮忙解释下啊,
  

5 楼

是要完善程序吗?
是的话请回复

6 楼


就是要完善程序

7 楼

#include <stdio.h> #define MAXLEN 10 typedef char DataType;
typedef struct {   DataType* Q;          /*数据存储区首地址*/   int front,rear;       /*队头、队尾指针*/ }cycQue;                /*循环队*/ void InitCycQue(CycQue* sp) {   sp>Q=(DataType*)malloc(MAXLEN*sizeof(DataType));   if(sp->Q==NULL) {                                                                                                                                          printf("\t\t\t内存分配错误\n"); } sp->front=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->Q[sp->rear]=x; sp->rear=(sp->rear+1)%MAXLEN;
return 1;                     /*入队完成*/ } } int ExitCycQue(CycQue* sp,DataType &x) /*将循环队列的队首元素出队,值送入x */ { if (Q.front==Q.rear )return  0;
X=Q.base[Q.front];
Q.front= (Q.front +1)%MAXLENp;return 1;
printf("\t\t\t请您输入程序代码!\n"); } int LenCycQue(CycQue* sp)             /*求循环队列的长度*/ { return(Q.rear-Q.front+MAXLEN)%MAXLEN);  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+1)o%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); 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------------求 队  长       *"); } 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"); } }

8 楼

#include <stdio.h>
#define MAXLEN 10
typedef char DataType;
typedef struct
{

  DataType* Q;          /*数据存储区首地址*/
  int front,rear;       /*队头、队尾指针*/
}cycQue;                /*循环队*/
void InitCycQue(CycQue* sp)
}
  sp>Q=(DataType*)malloc(MAXLEN*sizeof(DataType));
  if(sp->Q==NULL)
{
printf("\t\t\t内存分配错误\n");
}
sp->front=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->Q[sp->rear]=x;
sp->rear=(sp->rear+1)%MAXLEN;
return 1;                     /*入队完成*/
}
}
int ExitCycQue(CycQue* sp,DataType &x) /*将循环队列的队首元素出队,值送x */
{
if
(Q.front==Q.rear )return  0;
X=Q.base[Q.front];
Q.front=(Q.front +1)%MAXLENp;return 1;
printf("\t\t\t请您输入程序代码!\n");
}
int LenCycQue(CycQue* sp)             /*求循环队列的长度*/
{
return(Q.rear-Q.front+MAXLEN)%MAXLEN);  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+1)o%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);
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------------求 队  长       *");

}
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");
}
}

9 楼

我也没改多少,不知是否完善,请多多指教,我也是刚学的

10 楼

#include <stdio.h>
#define MAXLEN 10
typedef char DataType;
typedef struct{
  DataType* Q;          /*数据存储区首地址*/
  int front;
  int rear;       /*队头、队尾指针*/
}CycQue;                /*循环队*/
void InitCycQue(CycQue &sp)
{
  sp.Q=new DataType;
  if(sp.Q==NULL)
{
printf("\t\t\t内存分配错误\n");
}
sp.front=sp.rear=0;
printf("\t\t\t内存分配成功\n");
}
int InsertCycQue(CycQue &sp,char x)
{
  if((sp.rear+1)%MAXLEN==sp.front)
{
  printf("\t\t\t队满!不能再插入元素\n");
  return 0;                     /*队满不能入队*/
}
else
{
sp.Q[sp.rear]=x;
sp.rear=(sp.rear+1)%MAXLEN;
return 1;                     /*入队完成*/
}
}
int ExitCycQue(CycQue &sp,char &x) /*将循环队列的队首元素出队,值送x */
{
if
(sp.front==sp.rear )return  0;
x=sp.Q[sp.front];
sp.front=(sp.front +1)%MAXLEN;return 1;
printf("\t\t\t请您输入程序代码!\n");
}
int LenCycQue(CycQue &sp)             /*求循环队列的长度*/
{
return(sp.rear-sp.front+MAXLEN)%MAXLEN;  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+1)%MAXLEN;

}

}

}
void 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);
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------------求 队  长       *");

}
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");
}
}

我是在vc++6.0上改的,能运行,你试试

我来回复

您尚未登录,请登录后再回复。点此登录或注册