eg:顺序表实现循环队列
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//线性表结构
/************************************************ *** 自定义函数 *** *************************************************/ Status InitQueue(SqQueue *Q){ Q->base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType)); //returns a void pointer to the allocated space or NULL if there is insufficient memory available. if (!Q->base) return(OVERFLOW); Q->front =0; Q->rear =0;
DeБайду номын сангаасueue(&QNode,&x); printf("出队列元素:%d\n",x); }
return OK; } Status QueueLength(SqQueue Q){ return(Q.rear -Q.front +MAXQSIZE)%MAXQSIZE; } Status EnQueue(SqQueue *Q,QElemType e){ if((Q->rear +1)%MAXQSIZE==Q->front ) return ERROR; Q->base[Q->rear ]=e; Q->rear=(Q->rear+1)%MAXQSIZE; return OK; } Status DeQueue(SqQueue *Q,QElemType *e){ if(Q->front==Q->rear ) return ERROR; *e=Q->base[Q->front ]; Q->front =(Q->front +1)%MAXQSIZE; return OK; } void main(){ SqQueue QNode; QElemType x; int i,n=5; InitQueue(&QNode); for(i=1;i<=n;i++) EnQueue(&QNode,i); printf("显示队列 QNode:\n"); for(i=1;i<=QueueLength(QNode);i++) printf("第%d 个元素为:%d\n",i,QNode.base[(QNode.front+i-1)%MAXQSIZE]);
/*** 功能:顺序表实现“循环队列” 参考:严蔚敏《数据结构 C 语言描述》P64 日期:2012-3(本末终始) ***/ /************************************************ *** 头文件 *** *************************************************/ #include "stdio.h" #include "malloc.h" /************************************************ *** 《数据结构:C 语言版》约定 *** *************************************************/ //符号常量 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 //infeasible 不可行的 #define OVERFLOW -2 #define MAXQSIZE 100 #define LISTINCREMENT 10 //自定义类型 typedef int Status; //函数结果状态代码 typedef int QElemType; //数据元素类型 typedef struct{ QElemType *base; int front; int rear; }SqQueue;