?? bo3-3.cpp
字號:
// bo3-3.cpp 循環(huán)隊列(存儲結(jié)構(gòu)由c3-3.h定義)的基本操作(9個)
Status InitQueue(SqQueue &Q)
{ // 構(gòu)造一個空隊列Q
Q.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q.base) // 存儲分配失敗
exit(OVERFLOW);
Q.front=Q.rear=0;
return OK;
}
Status DestroyQueue(SqQueue &Q)
{ // 銷毀隊列Q,Q不再存在
if(Q.base)
free(Q.base);
Q.base=NULL;
Q.front=Q.rear=0;
return OK;
}
Status ClearQueue(SqQueue &Q)
{ // 將Q清為空隊列
Q.front=Q.rear=0;
return OK;
}
Status QueueEmpty(SqQueue Q)
{ // 若隊列Q為空隊列,則返回TRUE,否則返回FALSE
if(Q.front==Q.rear) // 隊列空的標志
return TRUE;
else
return FALSE;
}
int QueueLength(SqQueue Q)
{ // 返回Q的元素個數(shù),即隊列的長度
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
Status GetHead(SqQueue Q,QElemType &e)
{ // 若隊列不空,則用e返回Q的隊頭元素,并返回OK,否則返回ERROR
if(Q.front==Q.rear) // 隊列空
return ERROR;
e=*(Q.base+Q.front);
return OK;
}
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)
{ // 若隊列不空,則刪除Q的隊頭元素,用e返回其值,并返回OK;否則返回ERROR
if(Q.front==Q.rear) // 隊列空
return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
return OK;
}
Status QueueTraverse(SqQueue Q,void(*vi)(QElemType))
{ // 從隊頭到隊尾依次對隊列Q中每個元素調(diào)用函數(shù)vi().一旦vi失敗,則操作失敗
int i;
i=Q.front;
while(i!=Q.rear)
{
vi(*(Q.base+i));
i=(i+1)%MAXQSIZE;
}
printf("\n");
return OK;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -