关于队列ADT(FIFO)中添加新项问题,想了好几天卡在front和rear的挂钩问题,脑子笨只能用笨办法,画图
1.由于队列为空,运行:
pqueue->front=pnew;pqueue->rear=pnew;pqueue->nodes++
front和rear全部指向内存1,标签next(=NULL);
2.由于队列非空,运行:
pqueue->rear->next=pnew;rear指向的内存1中标签next(=NULL)指向内存2,(重点!)由于front也同样指向内存1,所以front指向的内存1中标签next同样指向内存2。
pqueue->rear=pnew;rear重指向内存2(标签next=NULL)
pqueue->nodes++
3.由于队列非空,运行:
pqueue->rear->next=pnew;rear指向的内存2中标签next(=NULL)指向内存3,(重点!)由于front指向的内存1的标签next指向内存2,所以front指向的内存1标签next指向的内存2标签next同样指向内存3。
pqueue->rear=pnew;rear重指向内存3(标签next=NULL)
pqueue->nodes++
......