数据结构课程设计(2)

2019-05-18 21:29

{

int carnumber; int money; time_t entertime; time_t leavetime; }Car;

typedef struct ParkList{ Car *head; int length; int listsize; }ParkList;

typedef struct WaitNode{ Car WaitCar; WaitNode *next; }WaitNode,*WaitList;

typedef struct LeaveNode{ Car LeaveCar; LeaveNode *next; }LeaveNode,*LeaveList;

int init_LeaveList(LeaveList &L){

L = (LeaveList)malloc(sizeof(LeaveNode)); L->next = NULL; }

int init_WaitList(WaitList &WL,Car wc){ WL = (WaitList)malloc(sizeof(WaitNode)); WL->WaitCar = wc; WL->next = NULL; }

void Put_LeaveList(LeaveList &L,Car lc){ LeaveList p = L; if(p==NULL){ return ; }

while(p->next){ p = p->next; }

LeaveList q = (LeaveList)malloc(sizeof(LeaveNode)); q->LeaveCar = lc;

p->next = q; q->next = NULL;

q->LeaveCar.money = (q->LeaveCar.leavetime-q->LeaveCar.entertime)*PRICE; }

void Putelem_WaitList(WaitList &WL,Car wc){ WaitList p = WL; if(p==NULL){

init_WaitList(WL,wc); return ; }

while(p->next){ p = p->next; }

WaitList q = (WaitList)malloc(sizeof(WaitNode)); q->WaitCar = wc; p->next = q; q->next = NULL; }

void delete_WaitList(WaitList &WL,Car &c){ if(WL==NULL){ return ; }

WaitList p = WL; c = p->WaitCar; if(WL->next==NULL){ WL=NULL; } else {

WL = WL->next; } free(p); }

Car CreateCar(int carnum){

Car *pc = (Car *)malloc(sizeof(Car)); pc->carnumber = carnum; pc->entertime = time(NULL); return *pc; }

int init_Parklist(ParkList &p) {

p.head = (Car *)malloc(LIST_INIT_SIZE*sizeof(Car)); if(!p.head) return 0; p.length = 0;

p.listsize = LIST_INIT_SIZE; return 1; }

int put_ParkList(ParkList &p,WaitList &WL,Car c) {

if(p.length==p.listsize){ if(WL==NULL) {

init_WaitList(WL,c); }

else Putelem_WaitList(WL,c); return 0; }

Car *pc = p.head; pc[p.length] = c; p.length += 1; return 1; }

int insert_ParkList(ParkList &p,WaitList &WL,int i) {

Car c;

delete_WaitList(WL,c);

if(i<0||i>=p.length){ return 0;} Car *pc = p.head;

for(int j=p.length-1;j>i-1;j--) {

pc[j+1]=pc[j]; } pc[i]=c; p.length += 1; return 1; }

int delete_ParkList(ParkList &p,LeaveList &L,int i) {

if(i>=0&&i

Car *pc = p.head;

pc[i].leavetime = time(NULL); Put_LeaveList(L,pc[i]);

for(int j=i;j

pc[j]=pc[j+1]; }

p.length -= 1; return 1; }

else return 0; }

void showParkList(ParkList p) {

if(p.head!=NULL) {

Car *pc = p.head; printf(\); for(int j=0;j

printf(\,pc[j].carnumber,ctime(&pc[j].entertime)); }

printf(\); } }

void showWaitList(WaitList WL){ WaitList p = WL; printf(\); while(p){

printf(\,p->WaitCar.carnumber,ctime(&(p->WaitCar.entertime))); p = p->next; } }

void showLeaveList(LeaveList L){ LeaveList p = L->next; printf(\); while(p){

printf(\,p->LeaveCar.carnumber, ctime(&(p->LeaveCar.entertime)));

printf(\,ctime(&(p->LeaveCar.leavetime)),p->LeaveCar.money); p = p->next; } }

int main() {

ParkList p; LeaveList L; WaitList WL=NULL; init_LeaveList(L); init_Parklist(p); srand(time(NULL)); Car c;

int i = 1,n=0; int dic = 0; int index = 0; int time = 0; while(i<=100){ dic = rand()%2; switch(dic){ case 1:

c = CreateCar(1000+i); put_ParkList(p,WL,c); break; case 0:

if(p.length==0){ break; } else {

index = rand()%p.length; delete_ParkList(p,L,index); if(WL!=NULL){

insert_ParkList(p,WL,index); } break; } default: break; } i++; }

showParkList(p); showWaitList(WL); showLeaveList(L);

}

4、 某银行营业厅共有6个营业窗口,设有排队系统广播叫号,该银行的业务分为公积金、

银行卡、理财卡等三种。公积金业务指定1号窗口,银行卡业务指定2、3、4号窗口,理财卡业务指定5、6号窗口。但如果5、6号窗口全忙,而2、3、4号窗口有空闲时,


数据结构课程设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一汽实习报告讲解 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: