运行栈溢出
#include
#include
#include
#define MaxSize 512
typedef struct CUS {
int Arrive;
int WaitTime;
int ordinal;
int BusiTime;
} customer, *Ptr;//顾客属性
typedef struct {
Ptr win[6];
} windows;//窗口
windows *WinQ;
customer que[MaxSize];
int main() {
int front = 0, rear = -1;
WinQ = (windows*)malloc(sizeof(windows));
int n, Tnum, ordi = 1, cusnum = 0, winnum = 3, tool;
scanf ("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &Tnum);
for (int j = 0; j < Tnum; j++) {
que[++rear].Arrive = i+1;
que[rear].ordinal = ordi;
scanf("%d", &que[rear].BusiTime);
que[rear].WaitTime = 0;
ordi++;
cusnum++;
}//入队
if (cusnum/7 >= winnum && winnum < 5)
winnum++;
for (int k = 0; k < winnum; k++) {
if(WinQ->win[k]->BusiTime == 0) {
WinQ->win[k] == NULL;
cusnum--;
}
if(WinQ->win[k] == NULL && front != rear-1) {
printf("%d : %d\n", que[front].ordinal, que[front].WaitTime);
WinQ->win[k] = &que[front];
front++;
}//出队后到窗口
WinQ->win[k]->BusiTime--;
}
if (cusnum/7 < winnum && winnum > 3)
winnum--;
for (tool = front; tool != rear+1; tool++) {
que[tool].WaitTime++;
}
}
while (front != rear-1) {
for (int k = 0; k < winnum; k++) {
if(WinQ->win[k]->BusiTime == 0) {
WinQ->win[k] == NULL;
cusnum--;
}
if(WinQ->win[k] == NULL && front != rear-1) {
printf("%d : %d\n", que[front].ordinal, que[front].WaitTime);
WinQ->win[k] = &que[front];
front++;
}
WinQ->win[k]->BusiTime--;
}
if (cusnum/7 < winnum && winnum > 3)
winnum--;
for (tool = front; tool != rear+1; tool++) {
que[tool].WaitTime++;
}
}
return 0;
}
自己修改了一下没太搞懂有可能是WinQ出问题了吗。