首页 > 代码库 > (源代码见大话数据结构)线性表—循环队列的顺序存储结构
(源代码见大话数据结构)线性表—循环队列的顺序存储结构
#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 typedef int Status; typedef int QElemType; typedef struct { QElemType data[MAXSIZE]; int front; int rear; }SqQueue; Status InitQueue(SqQueue *Q); Status QueueLength(SqQueue Q); Status EnQueue(SqQueue *Q,QElemType e); Status DeQueue(SqQueue *Q,QElemType *e); Status QueueTraverse(SqQueue Q); int main() { SqQueue q; int n; InitQueue(&q); EnQueue(&q,666); QueueTraverse(q); printf("%d\n",DeQueue(&q,&n)); printf("%d\n",n); return 0; } Status InitQueue(SqQueue *Q) { Q->front=0; Q->rear=0; return OK; } Status QueueLength(SqQueue Q) { return (Q.rear-Q.front+MAXSIZE)%MAXSIZE; } Status EnQueue(SqQueue *Q,QElemType e) { if((Q->rear+1)%MAXSIZE==Q->front) return ERROR; Q->data[Q->rear]=e; Q->rear=(Q->rear+1)%MAXSIZE;//忘了考虑rear==MAXSIZE-1;!!!!!!!!!! return OK; } Status DeQueue(SqQueue *Q,QElemType *e) { if(Q->front==Q->rear) return ERROR; *e=Q->data[Q->front]; Q->front=(Q->front+1)%MAXSIZE; return OK; } Status QueueTraverse(SqQueue Q) { int h; h=Q.front; while(h!=Q.rear) { printf("%d ",Q.data[h]); h=(h+1)%MAXSIZE; } return OK; }
实战BUG:
1.QueueTraverse(Q),没有定义h,把Q.front当变量了,结果导致,Q.front的下标改变了/(ㄒoㄒ)/~~
2.Q->rear改变时要考虑特殊情况如rear==MAXSIZE-1时。
(源代码见大话数据结构)线性表—循环队列的顺序存储结构
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。