linux_lv linux_lv
他乡游子
关注数: 4 粉丝数: 2 发帖数: 41 关注贴吧数: 1
循环队列改错,谢谢 遍历显示的时候出问题,请高手改正一下,谢谢! #include <stdio.h> #include <stdlib.h> #define MAXQSIZE   4 #define OVERFLOW   0 #define ERROR   0 #define OK   1 typedef int ElemType; typedef struct{      ElemType *base;      int front;      int rear; }SqQueue; //初始化 int InitQueue(SqQueue *Q) {      Q->base=(ElemType *)malloc(sizeof(ElemType)*MAXQSIZE);      if(!Q->base)          return ERROR;      Q->front=Q->rear=0;      return OK; } //入队 int EnQueue(SqQueue *Q,ElemType e) {      if((Q->rear+1)%MAXQSIZE==Q->front)//判断是否队满          return ERROR;      Q->base[Q->rear]=e;      Q->rear=(Q->rear+1)%MAXQSIZE;//%MAXQSIZE必要吗??? } //出队 int DeQueue(SqQueue *Q,ElemType *e) {      if(Q->front==Q->rear)//判断是否队空          return ERROR;      *e=Q->base[Q->front];      Q->front=(Q->front+1)%MAXQSIZE;//%MAXQSIZE必要吗???      return OK; } //求队长 int QueueLength(SqQueue *Q) {      return (Q->rear-Q->front+MAXQSIZE)%MAXQSIZE;//这样必要吗???? } //遍历顺序队列 int QueueTraverse(SqQueue *Q) {      int i,n;      n=QueueLength(&Q)-1;      for(i=Q->front;i<=n;i++)      {          printf("%d ",Q->base[i]);      }      printf("\n");      return OK; } int main() {      SqQueue Q;      printf("队列Q创建成功\n");      InitQueue(&Q);      printf("队列Q初始化成功\n");      ElemType elem;      printf("请输入3个值依次入队列:\n");      printf("第一个元素入队列:\n");      scanf("%d",&elem);      EnQueue(&Q,elem);      printf("第二个元素入队列:\n");      scanf("%d",&elem);      EnQueue(&Q,elem);      printf("第三个元素入队列:\n");      scanf("%d",&elem);      EnQueue(&Q,elem);      QueueTraverse(&Q);      printf("第一次出队列:\n");      DeQueue(&Q,&elem);      printf("本次出队列的元素是:%d\n",elem);      QueueTraverse(&Q);      printf("第二次出队列:\n");      DeQueue(&Q,&elem);      printf("本次出队列的元素是:%d\n",elem);      QueueTraverse(&Q);      printf("第三次出队列:\n");      DeQueue(&Q,&elem);      printf("本次出队列的元素是:%d\n",elem);      QueueTraverse(&Q);      return 0; }
1 下一页