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