青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我心飛翔

有事不慌,無事不荒,有容乃大,無欲則剛,以德立綱,外圓內(nèi)方。

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  1 隨筆 :: 9 文章 :: 13 評論 :: 0 Trackbacks

//數(shù)據(jù)結(jié)構(gòu)(C語言版)中棧的習(xí)題

#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#define ERROR 0
#define OK 1
typedef struct{
  int OccurTime;
  int NType;
}Event;
typedef struct{
 int ArrivalTime;
 int Duration;
}QElemType;
struct LNODE
{
  Event data;
  struct LNODE *next;
};
typedef struct LNODE LNode;
typedef struct LNODE *LinkList;
typedef struct LNODE *EvenList;
typedef struct QNode{
 QElemType elem;
 struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{ QueuePtr front;
  QueuePtr rear;
}LinkQueue;
EvenList ev;
Event en;
LinkQueue q[5];
QElemType customer;
int TotalTime,CustomerNum,CloseTime;

int InitList(EvenList *L)
{
  *L=(LNode *)malloc(sizeof(LNode));
  if(!(*L))   exit(ERROR);
  (*L)->next=NULL;
  return OK;
}
int DelFirst(EvenList *L,Event *e)
{ LNode *pc,*q;
  pc=*L;q=pc->next;
 pc->next=q->next;*e=q->data;return OK;}
int ListEmpty(LNode L)
{LNode *p;
 int j=0;
 p=L.next;
 while(p)
   {j++;break;}
 if(j==0) return 1;
 else return 0;
}
int compare(Event a,Event b)
{ if(a.OccurTime>b.OccurTime) return 1;
  else if(a.OccurTime==b.OccurTime) return 0;
  else return -1;
}
int OrderInsert(EvenList *L,Event e,int (* cmp)(Event ,Event ))
{ LNode *p,*pc;/*把事件插入鏈表*/
 p=(LNode *)malloc(sizeof(LNode));/*分配空間*/
 if(!p) { printf("not"); return(0);}
 if(ListEmpty(**L))
 { p->data=e;p->next=(*L)->next;(*L)->next=p;}
 else {
   switch(cmp(((*L)->next)->data,e))
  {case -1:pc=(*L)->next;
   while(pc->next!=NULL)
   {
    if((pc->next)->data.OccurTime<=e.OccurTime)
        pc=pc->next;
    else break;
   }
       p->data=e;p->next=pc->next;/*把它接在比它大的前*/
       pc->next=p;break;
     case 0:pc=(*L)->next;/*相等時,接在相等的后面*/
     p->data=e;p->next=pc->next;
     pc->next=p;break;
     case 1:p->data=e;p->next=(*L)->next;
        (*L)->next=p;break;/*小于時,接在最前面*/
 }}
 return 1;
}
void DestroyList(EvenList *L)/*銷毀表*/
{LNode *p;
 while(*L)
   {p=(*L)->next;free(*L);*L=p;}
}
int InitQueue(LinkQueue *Q)/*初始化隊列*/
{ Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode));
 if(!Q->front) exit(0);
 (Q->front)->next=NULL;
 return OK;
}
int DestroyQueue(LinkQueue *Q)/*銷毀隊列*/
{ while(Q->front)
    { Q->rear=Q->front->next;
     free(Q->front);
     Q->front=Q->rear;
    }
 return OK;
}
int EnQueue(LinkQueue *Q,QElemType e)/*插在隊最后*/
{QueuePtr p;
 p=(QueuePtr)malloc(sizeof(QNode));
 if(!p) exit(0);
 p->elem=e;p->next=NULL;
 (Q->rear)->next=p;
 Q->rear=p;/*重新設(shè)置隊尾*/
 return OK;
}
int QueueEmpty(LinkQueue Q)
{ if(Q.front==Q.rear) return OK;
 else return 0;}
int DelQueue(LinkQueue *Q,QElemType *e)/*刪除隊的第一個元素*/
{QueuePtr p;
 if(QueueEmpty(*Q)) return ERROR;
 p=(Q->front)->next;
 *e=p->elem;
 (Q->front)->next=p->next;
 if(Q->rear==p) Q->rear=Q->front;
 free(p);
 return OK;
}
void GetHead(LinkQueue Q,QElemType *a)
{QNode *p;
 if(Q.front==Q.rear) exit(0);
 p=(Q.front)->next;
 *a=p->elem;
}
int QueueLength(LinkQueue Q)/*隊的長度*/
{ int i=0;
 QNode *pc;
 if(Q.front==Q.rear) return 0;
 pc=Q.front;
 while(pc->next)
 {i++;pc=pc->next;}
 return i;
}
int Mininum(LinkQueue *Q)/*求長度最短的隊*/
{ int a[4],e,j,i;
  for(i=1;i<=4;i++)
      a[i-1]=QueueLength(Q[i]);
  e=a[0];j=1;
  for(i=1;i<=3;i++)
      if(e>a[i]) {e=a[i];j=i+1;}
  return j;
}
void OpenForDay()/*初始化操作*/
{ int i;
  TotalTime=0;CustomerNum=0;/*初始化累計時間和客戶數(shù)*/
  InitList(&ev);
  en.OccurTime=0;en.NType=0;/*設(shè)定第一個客戶到達(dá)事件*/
  OrderInsert(&ev,en,compare);/*把它插入事件表*/
  for(i=1;i<=4;i++) InitQueue(&q[i]);/*置空隊列*/
}
void Random(int *a,int *b)/*生成隨機(jī)數(shù),a為每個客戶辦理時間在30分鐘內(nèi),
                           b 為兩相隔客戶到達(dá)的間隔時間不超過5分鐘*/
{ *a=0+rand()%30;*b=0+rand()%5;}
void CustomerArrived()/*處理客戶到達(dá)事件*/
{int durtime,intertime,t,i,b;
 ++CustomerNum;/*記錄客戶數(shù)*/
 Random(&durtime,&intertime);
 b=en.OccurTime;
 t=en.OccurTime+intertime;/*下一客戶到達(dá)時刻*/
 if(t<CloseTime)
    {en.OccurTime=t;en.NType=0; 
     OrderInsert(&ev,en,compare);
    }
 i=Mininum(q);/*求隊列最短*/
 customer.ArrivalTime=b;customer.Duration=durtime;/*為要插入隊的客戶設(shè)置到達(dá)時間和辦理所需時間*/
 EnQueue(&q[i],customer);
 if(QueueLength(q[i])==1)
     {en.OccurTime=b+durtime;en.NType=i;
      OrderInsert(&ev,en,compare);/*設(shè)定第i 個離開事件并插入事件表*/
      }
}
void CustomerDeparture()/*處理客戶離開事件*/
{int i;
 i=en.NType;DelQueue(&q[i],&customer);/*刪除第i隊列的排頭客戶*/
 TotalTime+=en.OccurTime-customer.ArrivalTime;/*累計客戶逗留時間*/
 if(!QueueEmpty(q[i]))/*設(shè)定第i隊列的一個將要離開事件并插入事件表*/
    { GetHead(q[i],&customer);/*得到它的資料*/
     en.OccurTime+=customer.Duration;en.NType=i;
     OrderInsert(&ev,en,compare);
     }
}
void Bank_Simulation()
{
 OpenForDay();/*初始化*/
 while(!ListEmpty(*ev))/*非空時,刪掉表里的第一個*/
   { DelFirst(&ev,&en);
     if(en.NType==0)
  CustomerArrived();/*是客戶還沒辦理的,就處理到達(dá)事件*/
     else CustomerDeparture();/*否則處理離開事件*/
   }
 printf("The Average Time is %.2f\n",(float)TotalTime/CustomerNum);
}
void main()
{scanf("%d",&CloseTime);/*輸入關(guān)門時間*/
 Bank_Simulation();
 getch();
}

posted on 2005-10-18 23:23 無情雨 閱讀(477) 評論(0)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲欧美日韩专区| 久久影院午夜论| 久久精品国产一区二区三区| 欧美一区二区三区精品| 亚洲激情在线视频| 欧美成人在线影院| 亚洲黄色有码视频| 亚洲视频一区在线| 性欧美大战久久久久久久免费观看| 亚洲欧美日韩一区二区| 久久久青草青青国产亚洲免观| 美国十次了思思久久精品导航| 玖玖综合伊人| 欧美日韩精品一区视频| 欧美日韩在线播放三区| 国产精品一区二区三区成人| 国内外成人在线视频| 在线日韩av| 亚洲在线黄色| 麻豆国产va免费精品高清在线| 亚洲欧洲在线免费| 亚洲欧美一区二区三区极速播放| 欧美呦呦网站| 国产精品99久久久久久白浆小说 | 亚洲免费电影在线| 亚洲一区欧美二区| 美日韩丰满少妇在线观看| 欧美日韩三级视频| 亚洲丰满少妇videoshd| 午夜精彩视频在线观看不卡| 亚洲大胆女人| 欧美激情无毛| 日韩网站在线| 久久久久中文| 国产日韩精品视频一区二区三区 | 欧美国产在线观看| 国内精品久久久| 亚洲欧美www| 亚洲精品1234| 久久青草久久| 狠狠狠色丁香婷婷综合久久五月| 亚洲视频精选| 亚洲精品免费在线观看| 裸体素人女欧美日韩| 激情久久中文字幕| 久久久精品一区| 亚洲欧美一区二区精品久久久| 欧美视频福利| 亚洲一区二区三区777| 亚洲精选久久| 欧美日本乱大交xxxxx| 亚洲美女在线观看| 亚洲二区精品| 免费不卡在线观看av| 国产一区二区三区在线观看视频| 欧美日韩国产成人在线| 亚洲国产另类精品专区| 麻豆国产精品va在线观看不卡| 亚洲在线观看| 国产精品午夜春色av| 亚洲一区二区3| 一区二区欧美在线观看| 欧美性猛片xxxx免费看久爱| 亚洲午夜在线观看视频在线| 一本一本久久| 国产精品一区久久| 久久精品日产第一区二区| 欧美视频福利| 免费欧美在线视频| 久久免费精品日本久久中文字幕| 国产一区日韩一区| 久久综合网色—综合色88| 久久午夜国产精品| 99精品国产在热久久| 夜夜嗨av一区二区三区中文字幕 | 欧美在线观看你懂的| 国产亚洲一本大道中文在线| 美日韩精品免费观看视频| 久久综合一区二区三区| 亚洲狼人精品一区二区三区| 日韩一二三在线视频播| 国产麻豆午夜三级精品| 免费永久网站黄欧美| 欧美国产日韩二区| 国产精品嫩草影院一区二区| 久久视频这里只有精品| 欧美mv日韩mv国产网站| 午夜精品短视频| 久久亚洲高清| 亚洲乱码国产乱码精品精可以看 | 一区二区高清视频在线观看| 亚洲色无码播放| 在线观看的日韩av| 夜夜嗨av一区二区三区| 狠狠色噜噜狠狠色综合久| 91久久精品国产91久久| 国产精品视频免费观看| 欧美高清视频在线播放| 国产精品高潮呻吟视频| 欧美成人在线影院| 午夜精品久久久久久久蜜桃app| 一区二区三区在线观看欧美| 亚洲精品一区二区三区樱花| 国产在线视频欧美| 日韩视频精品| 亚洲国产视频一区| 亚洲欧美亚洲| 亚洲欧美日本国产有色| 欧美www视频| 久久精品论坛| 国产精品久久毛片a| 免费久久99精品国产自在现线| 这里是久久伊人| 蜜桃av一区二区三区| 久久天堂成人| 国产一区二区日韩精品| 一本色道久久综合亚洲二区三区 | 在线综合亚洲| 蜜臀av在线播放一区二区三区| 久久国产精品电影| 国产精品久久二区| 99国产精品久久久久久久久久 | 99精品国产在热久久下载| 在线成人免费观看| 久久丁香综合五月国产三级网站| 亚洲资源在线观看| 国产精品jizz在线观看美国 | 欧美黄污视频| 在线精品在线| 久久这里有精品15一区二区三区| 久久精品一区二区三区四区| 国产精品实拍| 亚洲一区在线观看免费观看电影高清| 日韩一级视频免费观看在线| 国产乱子伦一区二区三区国色天香 | 欧美在线二区| 欧美日韩国产精品自在自线| 亚洲成色999久久网站| 国产一区欧美| 欧美专区在线播放| 蜜桃伊人久久| …久久精品99久久香蕉国产| 久久久水蜜桃| 亚洲国产精品激情在线观看| 亚洲欧洲综合另类在线| 欧美韩日一区| 亚洲免费av网站| 亚洲综合成人婷婷小说| 国产精品久久综合| 久久岛国电影| 亚洲国产91精品在线观看| 一级日韩一区在线观看| 国产精品扒开腿做爽爽爽软件| 中文高清一区| 久久一日本道色综合久久| 亚洲高清视频一区| 欧美精品在线免费| 亚洲一区观看| 欧美chengren| 亚洲图片欧洲图片av| 国产免费一区二区三区香蕉精| 午夜精品久久久久久久99樱桃| 久久亚洲一区二区三区四区| 亚洲日韩中文字幕在线播放| 欧美三级网页| 久久精品在线播放| 亚洲乱码日产精品bd| 国产精品久久久一区二区| 欧美一区在线视频| 亚洲日韩视频| 久久久久.com| 一区二区不卡在线视频 午夜欧美不卡在 | 在线综合欧美| 久久精品国产精品 | 激情五月婷婷综合| 欧美精品入口| 久久av红桃一区二区小说| 亚洲人午夜精品免费| 欧美在线一区二区| 一本久久综合亚洲鲁鲁五月天| 国产深夜精品福利| 欧美美女日韩| 久久香蕉国产线看观看网| 亚洲专区一区| 亚洲精品婷婷| 欧美成人精品一区二区| 欧美呦呦网站| 亚洲午夜久久久久久尤物| 亚洲高清精品中出| 国产小视频国产精品| 欧美午夜精品伦理| 欧美大香线蕉线伊人久久国产精品| 亚洲欧美www| 一区二区三区日韩欧美| 91久久精品美女高潮| 乱中年女人伦av一区二区| 欧美一区二区三区成人| 亚洲视频一区在线观看| 日韩午夜激情电影| 91久久中文|