// 形参增加L,因为需修改LР{ // h指向L的一个结点,把h当做头结点,删除链表中的第一个结点并以q返回。Р // 若链表为空(h指向尾结点),q=NULL,返回FALSEР q=h->next;Р if(q) // 链表非空Р {Р h->next=q->next;Р if(!h->next) // 删除尾结点Р L.tail=h; // 修改尾指针Р L.len--;Р return OK;Р }Р elseР return FALSE; // 链表空Р}//DelFirstРElemType GetCurElem(Link p)Р{ // 已知p指向线性链表中的一个结点,返回p所指结点中数据元素的值Р return p->data;Р}//GetCurElemРvoid Bank_Simulation()Р{РLink p;РOpenForDay();Рwhile(!ListEmpty(ev))Р {Р DelFirst(ev,GetHead(ev),p);Р en.OccurTime=GetCurElem(p).OccurTime;Р en.NType=GetCurElem(p).NType;Р if(en.NType==Qu)Р CustomerArrived();Р elseР CustomerDeparture();Р }//whileРprintf("顾客总数:%d, 所有顾客共耗时:%d分钟, 平均每人耗时: %d分钟\n",CustomerNum,TotalTime,TotalTime/CustomerNum);Р}//Bank_SimulationРint main()Р{Рprintf("请输入银行营业时间长度(单位:分)\n");Рscanf("%d",&CloseTime);РBank_Simulation();Рreturn OK; Р}