2 回答

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
黑色的提示框是程序運(yùn)行結(jié)果窗口,不是錯(cuò)誤的窗口
代碼錯(cuò)誤說明如下:
while (Q->front!=Q->rear) //在本循環(huán)體之中,Q->front Q->rear的值始終沒有變化 //故而在這里肯定是一個(gè)死循環(huán) { printf ( "%d, " , Q->front->next->data); Q->front->next=Q->front->next->next; } //改正后的代碼如下: QNode* s = Q->front; while (s!=Q->rear) { printf ( "%d, " , s->data); s=s->next; } |
另外,所有的函數(shù)當(dāng)中不應(yīng)該有exit
exit是一個(gè)系統(tǒng)函數(shù),表示結(jié)束程序,而不是退出函數(shù)
如果需要退出函數(shù)可以使用return來達(dá)到該目的

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
你的代碼是想把front到rear的值全部輸出
但是你下面的操作自己檢查一下沒有改變front的值,也沒有改變r(jià)ear的值,所以front!=rear是死循環(huán)
如果好一點(diǎn)的話
void printQueue(LinkQueue *Q)/*依次輸出隊(duì)列*/
{
if(Q->front==Q->rear)
{
printf("隊(duì)列為空");
exit(1);
}
while(Q->front!=Q->rear)/*老師告訴我說是這里的while是死循環(huán),為什么是死循環(huán)呢,不是很懂,請(qǐng)細(xì)說。請(qǐng)幫我改為正確的代碼,謝謝。*/
{
printf("%d, ", Q->front->data);
Q->front=Q->front->next;
}
//exit(0);
}試試可不可以
- 2 回答
- 0 關(guān)注
- 160 瀏覽
添加回答
舉報(bào)