当前位置: 技术问答>linux和unix
数据结构中循环队列的简单问题
来源: 互联网 发布时间:2017-01-19
本文导语: 教材中的只能存放数字,怎样才可以存放字符串???比如每个节点的数据部分为长度为1472的字符型,我应该怎么改?? #include #include #define TRUE 1 #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define INFEASIBLE -1 #defin...
教材中的只能存放数字,怎样才可以存放字符串???比如每个节点的数据部分为长度为1472的字符型,我应该怎么改??
#include
#include
#define TRUE 1
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define INFEASIBLE -1
#define FALSE 0
#define MAXQSIZE 6
typedef int Status;
typedef int QElemType;
typedef struct{
QElemType *base;
int front;
int rear;}SqQueue;
Status InitQueue (SqQueue *Q){/*构造一个空队列Q*/
Q->base =(QElemType *)malloc(MAXQSIZE *sizeof(QElemType));
if(!Q->base)exit(OVERFLOW);
Q->front =Q->rear =0;
return OK;}
int QueueLength (SqQueue Q){/*返回Q的元素个数,即队列的长度*/
return (Q.rear-Q.front+MAXQSIZE) %MAXQSIZE;}
Status EnQueue(SqQueue *Q,QElemType e){/*插入元素e为Q的新的队尾元素*/
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;}
Status QueuePrint(SqQueue Q){
int i,j; int p;
QElemType e;
j=(Q.rear-Q.front +MAXQSIZE)%MAXQSIZE;
p=Q.front ;
if(Q.front ==Q.rear)
printf("队列为空。n");
else{ if((Q.rear+1)%MAXQSIZE==Q.front)
printf("队列满。n");
else
if((Q.front+1)%MAXQSIZE!=Q.front)
printf("队列非空非满。n");
for(i=1;i