問題:
1.main函式里do-while回圈的退出回圈的判斷感覺一直輸入很麻煩
(想可以連續輸入資料,不斷模擬快取,直到想停止程式再從鍵盤輸入某個東西判斷退出)。
2.InQueue 函式里的兩個if判斷怎么修改才可以省略一個。
如果覺得程式實在不好改(大佬見諒,希望可以說說實作快取這個功能的思路---

//2019213020
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 6 //每次快取最大為五組資料
typedef struct
{
int queue[MAX_SIZE];
int rear;
int front;
}QUEUE,*pQUEUE;
void InitQueue(pQUEUE p);
void InQueue(pQUEUE p);
void OutQueue(pQUEUE p);
int main()
{
QUEUE myQueue;
char choose;
InitQueue(&myQueue);
do{
InQueue(&myQueue);
printf("是否繼續(Y/N)\n");
scanf(" %c",&choose); //感覺這樣每次輸入判斷很麻煩,想可以連續輸入資料直到想停止程式在輸入
}while(choose == 'Y'||choose == 'y');
return 0;
}
//函式功能:初始化佇列
void InitQueue(pQUEUE p)
{
p->front = 0;
p->rear = 0;
}
//函式功能:實作快取讀寫功能
void InQueue(pQUEUE p)
{
//一:
if((p->rear+1)%MAX_SIZE == p->front)
{
printf("overflow\n");
OutQueue(p);
}
printf("Input x:\n");
scanf("%d",&p->queue[p->rear]);
p->rear = p->rear%MAX_SIZE+1;
//二:
if((p->rear+1)%MAX_SIZE == p->front) //隊滿則一次性輸出資料,并清空佇列
{
printf("overflow\n");
OutQueue(p);
}
return ;
}
//函式功能:實作快取輸出功能
void OutQueue(pQUEUE p)
{
if(p->front == p->rear) //隊空則退出程式
{
printf("underflow!\n");
exit(-1);
}
while(p->front != p->rear)
{
printf("%d\n",p->queue[p->front]);
p->front = p->front%MAX_SIZE+1;
}
return ;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/191269.html
標籤:C語言
上一篇:感謝!
下一篇:泰勒公式求正弦:請問哪里錯了?
