亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 全國交通咨詢系統 設計主要分三個部分:一是建立交通網絡圖的存儲結構
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*TRAFFIC.H*/
#define MAX_VERTEX_NUM 50
#define MAX_PATH 100
#define MAX_LINE 50
#define OK 1
#define ERROR 0
#define FALSE 0
#define TRUE 1
#define YES 1
#define NO 0
#define OVERFLOW -2
#define MAXERROR 3
#define MAXVER 16
#define MAX 32767
#define NEXTSTEP getch()

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<conio.h>   


typedef int status;
typedef char step;
typedef char CityName[MAXVER];
typedef int StrARR[MAX_PATH][MAX_VERTEX_NUM+1];   

typedef struct Dtime
{
int hour;
int minute;
}Dtime;

typedef struct Tooltype
{
int money;
int line;
struct Dtime starttime[MAX_LINE];
struct Dtime drivetime;
}Tooltype;

typedef struct ArcNode
{
int adjvex;
struct ArcNode *nextarc;
Tooltype * Tool[2];    /* 分別指向火車和飛機*/
}ArcNode;

typedef struct VNode
{
CityName data;
ArcNode * firstarc;
}VNode,AdjList[MAX_VERTEX_NUM];

typedef struct
{
AdjList vertices;
int vexnum,arcnum;
}ALGraph;

void openfile(char *);
step Scanall(ALGraph G);
step Scandes(ALGraph G);
step Scanstart(ALGraph G);
int LocateVex(ALGraph G,CityName v);
step Edit(ALGraph &G);
void editsucc(ALGraph G);
step Exit();
status DestroyGraph(ALGraph &G);
status Inite(ALGraph &G);
status Save(ALGraph G);
status Creat(ALGraph &G);
step Scan(ALGraph G);
step Addarc(ALGraph &G);
step Delarc(ALGraph &G);
step Addvex(ALGraph &G);
step Delvex(ALGraph &G);
step Inqurie(ALGraph G);
status GLtime(Dtime a,Dtime b);
void AllPath(ALGraph , int from, int to,StrARR , int &i);
step Shorttime(ALGraph ,int tool,StrARR path,int n);
step Lessmoney(ALGraph ,int tool,StrARR path,int n);
step Lesschange(ALGraph ,int tool,StrARR path,int n);
void Counttime(Dtime &arrive,Dtime start,Dtime drive,int & day ,int &hour,int &minute);
void DFS(ALGraph G,int i);
status DFSTraverse(ALGraph G);
void printpath(ALGraph G,int kind,StrARR path,int min);

/*MAIN.CPP*/
status visited[MAX_VERTEX_NUM];
void main()
{
 char c = '0';
 ALGraph G;
 textbackground(1);
 textcolor(7);
 openfile("name");
 getch();
 Inite(G);
while(c != 'y')
{
 if(c == '0')
  {
  openfile("main");
  c = NEXTSTEP;
  }
 switch(c)
  {
  case '1':case 's':case 'S':
  c = Scan(G);break;
  case '2':case 'e':case 'E':
  c = Edit(G);break;
  case '3':case 'i':case 'I':
  c = Inqurie(G);break;
  case '4':case 'q':case 'Q':
  c = Exit();break;
  default:c = '0';
  }
}
openfile("Bye");
getch();
}

/*Addarc.CPP*/
step Addarc(ALGraph &G)
 {
   CityName from,to;
   int hour,minute,i = -1,j = -1,k,error = 0;
   Dtime leave;
   ArcNode *p;
   openfile("head");
   while( i == -1)
    {                       /*input   the  starte station*/
      printf("please input the addarc leave station.\n");
      scanf("%s",from);
      i = LocateVex(G,from);
      if(i == -1)
      {
        printf("There is no %s station\n",from);
	    error ++;
	    if(error == MAXERROR)   /*too many  error times*/
	    {                 
	      openfile("error");
           return NEXTSTEP;
	    }
        printf("please reinput:");
      }
    }
    
    error = 0;
   while( j == -1)
    {                    /*input  the terminus station*/
      printf("please input the addarc terminus station.\n");
      scanf("%s",to);
      j = LocateVex(G,to);
      if(j == -1)
      {
	    printf("There is no %s station\n",to);
	    error ++;
	    if(error == MAXERROR)
	    {
	      openfile("error");
           return NEXTSTEP;
	    }
	     printf("please reinput:");
      }
    }
    
    for(p = G.vertices[i].firstarc; p && p -> adjvex !=j;p = p -> nextarc);  /*search  the  arc  from i  to  j*/
    if(!p)                                                                   /*if not  exist  creat  the  arc*/
      {   
        p = (ArcNode *) malloc(sizeof(ArcNode));
        p -> adjvex = j;
        p -> nextarc = G.vertices[i].firstarc;
        G.vertices[i].firstarc = p;
	    p -> Tool[0] = NULL;
	    p -> Tool[1] = NULL;
      }
      
      i = -1;
      error = 0;
   while(i == -1)
   {
    printf("Which vehicle do you want to add?\n    1 train \n    2 fly\n");
    scanf("%d",&i);
    getchar();
    if(i != 1&&i != 2)  /*input  error!*/ 
    {
      error ++;
     if(error == MAXERROR)
	    {
	      openfile("error");
           return NEXTSTEP;
	    }
      printf("input error!please reinput!\n");
      i = -1;
    }

    else 
     {
       if(!p -> Tool[i-1])
        {                                            /*the  first  arc  , add   the arc infomation*/
         printf("This is the first line\n");
	     p -> Tool[i-1] = (Tooltype *)malloc(sizeof(Tooltype));
	 printf("How much money drive to %s by this tool\n",to);
	     scanf("%d",&p-> Tool[i-1] ->money);
	     printf("How long drive for %s to %s?(hour:minute)\n",from,to);
	     scanf("%d:%d",&p -> Tool[i-1] -> drivetime .hour,& p -> Tool[i-1] -> drivetime .minute);
	     p -> Tool[i-1] -> line = 0;
        }
         printf("please input the leave time.(hour:minute)\n");
         scanf("%d:%d",&leave.hour,&leave.minute);
         if(p -> Tool[i-1] ->line == MAX_LINE)
          {               /*the   line  is  Full*/
            openfile("head");
	        printf("The line  if  FULL!!\nCan not add other arc!\n");
	      }
	  else
	   {
	   for(k = 0;(k < p -> Tool[i-1] -> line)&& GLtime(leave,p->Tool[i-1]->starttime[k]);k ++);
	   if(leave.hour == p->Tool[i-1]->starttime[k].hour &&
	      leave.minute == p -> Tool[i-1]->starttime[k].minute)
	    {
	      openfile("head");
	      printf("This line is exist!!\n");
	      return NEXTSTEP;
	    }
	 for(j = p -> Tool[i-1] -> line;j > k;j --)
	 {
	  p->Tool[i-1]->starttime[j].hour = p->Tool[i-1]->starttime[j-1].hour;
	  p->Tool[i-1]->starttime[j].minute = p->Tool[i-1]->starttime[j-1].minute;
         }
          p->Tool[i-1]->starttime[k].hour = leave.hour;
	  p->Tool[i-1]->starttime[k].minute = leave.minute;
	  p -> Tool[i-1] -> line ++;
	   openfile("head");
       printf("add success!\n");
      }
     }
  }
   return NEXTSTEP;
 }
 
 /*Addvex.CPP*/
 step Addvex(ALGraph &G)
 {
   CityName add;
   openfile("head");
   if(G.vexnum == MAX_VERTEX_NUM)
    {
     printf("Full !!\n");
     return NEXTSTEP;
    }
   printf("Please input the station name:\n");
   scanf("%s",add);
   getchar();
   if(LocateVex(G,add) != -1)
   {
    printf("The station is exist!!");
    }
    else 
    {
     strcpy(G.vertices[G.vexnum].data,add);
     G.vertices[G.vexnum].firstarc = NULL;
     G.vexnum ++;
     printf("%s station add success!!\n",add);
    }
  return NEXTSTEP;
 }
 
 /**/void AllPath(ALGraph g, int from, int to,StrARR path, int &i)
{
int m,j;
ArcNode *p;
extern visited[];

for(m = 0 ; path[i][m]!=-1 ;m++); /* Add "from" to the path*/
path[i][m] = from;

visited[from] = TRUE;
if(from == to)  /*search  the  line*/
{ 
i++;
for(m = 0;path[i-1][m]!=-1;m++)
path[i][m] = path[i-1][m];
}
else
 for(p = g.vertices[from].firstarc;p;p = p->nextarc)
  {         /*DFS trave*/
    if(!visited[p->adjvex])
    AllPath(g,p->adjvex,to,path,i);
  }
  
visited[from] = FALSE;

for(m = 0; path[i][m] != from && path[i][m]!=-1; m++);  /*delete "from" from the path*/
path[i][m] = -1;
}

/**/
void Counttime(Dtime &arrive,Dtime start,Dtime drive,int & day ,int &hour,int &minute)
  /*arrive  at arrivetime  start at start time  ,drive in the  way pay  the drive time*/
  /*count  the  total time  and  return it  by  day,hour,minute*/
 { 
   minute = minute + drive.minute + start.minute - arrive.minute;
   if(minute < 0)
    {
      hour --;
      minute += 60;
    }
   else if(minute >= 60)
    {
     hour ++;
     minute -=60;
    }
  hour = hour + drive.hour + start.hour - arrive.hour;
    if( hour < 0)
    {
      day --;
      hour +=24;
    }
    else if(hour >= 24)
     {
       day = day + hour/24;
       hour = hour%24;
     }
   arrive.minute = start.minute + drive.minute;
    if(arrive.minute >= 60)
     {
       arrive.hour = 1;
       arrive.minute=arrive.minute%60;
       arrive.hour = start.hour + drive.hour + 1;
     }
   else 
   arrive.hour = start.hour + drive.hour;
   if(arrive.hour>=24)
    arrive.hour = arrive.hour%24;
 }
 
 /**/
 void Counttime(Dtime &arrive,Dtime start,Dtime drive,int & day ,int &hour,int &minute)
  /*arrive  at arrivetime  start at start time  ,drive in the  way pay  the drive time*/
  /*count  the  total time  and  return it  by  day,hour,minute*/
 { 
   minute = minute + drive.minute + start.minute - arrive.minute;
   if(minute < 0)
    {
      hour --;
      minute += 60;
    }
   else if(minute >= 60)
    {
     hour ++;
     minute -=60;
    }
  hour = hour + drive.hour + start.hour - arrive.hour;
    if( hour < 0)
    {
      day --;
      hour +=24;
    }
    else if(hour >= 24)
     {
       day = day + hour/24;
       hour = hour%24;
     }
   arrive.minute = start.minute + drive.minute;
    if(arrive.minute >= 60)
     {
       arrive.hour = 1;
       arrive.minute=arrive.minute%60;
       arrive.hour = start.hour + drive.hour + 1;
     }
   else 
   arrive.hour = start.hour + drive.hour;
   if(arrive.hour>=24)
    arrive.hour = arrive.hour%24;
 }
 
 /**/
 step Delvex(ALGraph &G)
  {
  int v = -1,error,delarc = 0,i;
  CityName station;
  ArcNode *p,*q;
  openfile("head");
 while(v == -1)
 { 
  printf("which station do you want to delete?\n");
  scanf("%s",station);
  getchar();
  v = LocateVex(G,station);
  if( v == -1)
  {
   printf("There is no %s station\n",station);
    error++;
    if(error == MAXERROR)
     {
       openfile("error");
       return NEXTSTEP;
     }
  }
 }
 
   delarc = 0;
   for(i = 0;i < G.vexnum; i++)
   {
   if(i == v)
    continue;
    p = G.vertices[i].firstarc;
    while(p)
    {
     if(p->adjvex>v)
      p->adjvex--;
     else if(p -> adjvex == v)
     {
      if(p == G.vertices[i].firstarc)
        {
        G.vertices[i].firstarc = p -> nextarc;
        if(p -> Tool[0])
          {
           free(p -> Tool[0]);
	       p->Tool[0] = NULL;
          }
        if(p -> Tool[1])
          {
           free(p -> Tool[1]);
           p->Tool[1] = NULL;
          }
	    free(p);
	    p =  G.vertices[i].firstarc;
        delarc ++;
        }//if(p == G.vertices[i].firstarc)
       
      else
       {
         q -> nextarc = p -> nextarc;
         if(p -> Tool[0])
         {
          free(p -> Tool[0]);
          p->Tool[0] = NULL;
         }
         if(p -> Tool[1])
          {
          free(p -> Tool[1]);
          p->Tool[1] = NULL;
          }
         free(p);
         delarc ++;
         p = q -> nextarc;
       }
     }//if(p -> adjvex == v)
     else 
     {
      q = p;
      p = p -> nextarc;
     }
    }// while(p) 
   }// for(i = 0;i < G.vexnum; i++)
   
   for(p = G.vertices[v].firstarc;p;) /*delete the arc of from v*/
    {
     q = p;
     p = p -> nextarc;
     if(q -> Tool[0])
      {
       free(q -> Tool[0]);
       q ->Tool[0] = NULL;
      }
     if(q -> Tool[1])
      {
      free(q -> Tool[1]);
      q ->Tool[1] = NULL;
      }
     free(q); 
     delarc ++;
    }
    
   G.vertices[v].firstarc = NULL;
   for( i = v;i < G.vexnum-1; ++i)   
   {
      strcpy(G.vertices[i].data,G.vertices[i+1].data);
      G.vertices[i].firstarc = G.vertices[i+1].firstarc;
   }
   G.vertices[i].firstarc = NULL;
   G.vexnum--;
   G.arcnum -= delarc;
   printf("delet success!!\n") ;
   return NEXTSTEP;
  }
  
  /**/
  void DFS(ALGraph G,int i)
 {
   ArcNode *p;
    extern visited[];
   visited[i] = TRUE;
   printf("%10s to:  ",G.vertices[i].data);
  for(p = G.vertices[i].firstarc; p ;p = p -> nextarc)
  printf("%10s",G.vertices[p -> adjvex].data);
  printf("\n");
  for(p = G.vertices[i].firstarc;p ; p = p -> nextarc)
   if(!visited[p ->adjvex])
    DFS(G,p->adjvex);
 }
 
status DFSTraverse(ALGraph G)
{
 int i;
 extern visited[];
 for(i = 0;i < G.vexnum;++i)
   visited[i] = FALSE;
 for(i = 0;i < G.vexnum;++i)
  if(!visited[i])
    DFS(G,i);
return OK;
}

/**/
step Edit(ALGraph &G)
 {
   step c = '0';
 while(c == '0')
 {
   openfile("edit");
   c = NEXTSTEP;
   switch(c)
   {
     case '1':
     c = Addarc(G);break;
     case '2':
     c = Delarc(G);break;
     case '3':
     c = Addvex(G);break;
     case '4':
     c = Delvex(G);break;
     case 's':case 'i':case 'q':case 'e':
     case 'S':case 'I':case 'Q':case 'E':
     break;
     default:c='0';
   }
 }
return c;
}

/**/
step Exit()
 {
    openfile("exit");
    return NEXTSTEP;
 }
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黑丝在线一区二区三区| 欧美日韩精品欧美日韩精品一| 国产高清亚洲一区| 欧美精品一卡两卡| 亚洲第一成人在线| 色爱区综合激月婷婷| 亚洲综合色自拍一区| 在线观看不卡视频| 亚洲综合一区二区| 东方欧美亚洲色图在线| 欧美国产综合色视频| 高潮精品一区videoshd| 国产欧美精品一区二区三区四区| 美女视频免费一区| 欧美日韩一区在线观看| 亚洲成人免费在线观看| 高清在线成人网| 中文字幕日韩精品一区| 色视频成人在线观看免| 亚洲国产一区二区三区| 宅男在线国产精品| 麻豆精品一区二区三区| 久久久久久夜精品精品免费| 国产精品一区二区免费不卡 | 日韩欧美精品在线视频| 美日韩一区二区三区| 精品国产一区二区三区久久久蜜月 | 亚洲在线视频网站| 欧美色网一区二区| 亚洲综合精品久久| 欧美电影免费提供在线观看| 国产一区二区三区日韩| 亚洲欧美怡红院| 丁香婷婷综合色啪| 久久毛片高清国产| 91在线国产福利| 亚洲成年人网站在线观看| 欧美三级视频在线| 看电影不卡的网站| 亚洲欧美怡红院| 色系网站成人免费| 秋霞成人午夜伦在线观看| 久久嫩草精品久久久精品| 91碰在线视频| 一区二区三区久久| 欧美一区二区三区四区五区| 精品系列免费在线观看| 国产精品午夜久久| 欧美精品久久久久久久多人混战| 精品亚洲成a人| 亚洲午夜精品网| 欧美日韩mp4| 成人精品视频一区| 亚洲一区二区三区四区在线观看| 久久久影视传媒| 91影视在线播放| 久久99精品一区二区三区| 在线成人免费观看| 99国产一区二区三精品乱码| 精品无人区卡一卡二卡三乱码免费卡 | 免费成人美女在线观看.| 国产精品国产成人国产三级| 日韩精品一区二区三区三区免费| 在线亚洲一区二区| 国产精品一区二区三区网站| 日韩精品亚洲一区二区三区免费| 最近日韩中文字幕| 久久综合给合久久狠狠狠97色69| 色嗨嗨av一区二区三区| 亚洲国产成人av| 国产精品国产三级国产三级人妇| 欧美色电影在线| 精品一区二区免费| 日韩制服丝袜先锋影音| 一区二区三区波多野结衣在线观看| 2020国产精品自拍| 日韩午夜电影av| 欧美吞精做爰啪啪高潮| 色哟哟国产精品| 不卡影院免费观看| 国产综合一区二区| 亚洲人成亚洲人成在线观看图片 | 国精品**一区二区三区在线蜜桃| 婷婷夜色潮精品综合在线| 一区二区三区小说| 在线观看www91| 99久精品国产| av一区二区久久| 国产成人免费视频网站| 麻豆久久一区二区| 久久精品国产99久久6| 久久国产生活片100| 久久99精品国产麻豆婷婷| 久久国内精品视频| 韩国女主播成人在线观看| 精品一区二区久久久| 一区二区三区欧美| 亚洲午夜在线观看视频在线| 亚洲www啪成人一区二区麻豆| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品久久久久久久久免费相片| 精品久久一区二区三区| wwwwww.欧美系列| 精品久久久久久最新网址| 日韩精品一区二区在线观看| 精品久久久三级丝袜| 国产欧美一区二区三区网站| 国产精品天干天干在线综合| 国产精品久久久一区麻豆最新章节| 国产精品美女一区二区在线观看| 国产精品美女一区二区三区| 亚洲另类色综合网站| 亚洲午夜免费视频| 日日摸夜夜添夜夜添精品视频| 亚洲超丰满肉感bbw| 奇米影视一区二区三区| 国产自产高清不卡| av电影在线观看完整版一区二区| 一本色道久久综合亚洲91| 欧美日韩在线免费视频| 欧美一区二区不卡视频| 国产拍欧美日韩视频二区| 国产精品女同互慰在线看| 亚洲精品亚洲人成人网在线播放| 亚洲国产精品综合小说图片区| 日本女人一区二区三区| 国产91丝袜在线播放九色| 色综合久久中文字幕综合网 | 国产精品欧美久久久久无广告 | 国产精品福利一区二区| 中文字幕在线一区免费| 亚洲sss视频在线视频| 极品少妇xxxx精品少妇| av中文字幕一区| 日韩区在线观看| 国产欧美综合在线观看第十页| 一区二区在线看| 国产一区二区三区| 91久久精品日日躁夜夜躁欧美| 日韩欧美一级二级三级| 亚洲欧洲日韩在线| 免费看欧美女人艹b| 不卡电影一区二区三区| 欧美丰满美乳xxx高潮www| 国产欧美一区视频| 秋霞电影网一区二区| 91欧美激情一区二区三区成人| 正在播放亚洲一区| 亚洲欧美偷拍三级| 国产在线精品不卡| 欧美三级韩国三级日本一级| 精品国产乱码久久久久久免费| 亚洲激情av在线| 国产福利一区二区三区视频| 日韩一区二区在线观看| 一区二区三区高清| 波多野结衣中文字幕一区二区三区| 欧美一区二区三区在线看| 在线播放日韩导航| 中文字幕一区二区三区在线播放| 国产一区二区免费看| 欧美α欧美αv大片| 免费观看一级欧美片| 91精品国产麻豆国产自产在线 | 国产精品久久久久婷婷| 国产91精品在线观看| 久久久不卡网国产精品二区| 国产一区二区网址| 久久精品视频网| 国产91富婆露脸刺激对白| 日本一区二区三区久久久久久久久不| 国产精品99久久久久久宅男| 国产网红主播福利一区二区| 精品写真视频在线观看| 久久久久久97三级| 成人在线视频一区| 亚洲同性gay激情无套| 色狠狠综合天天综合综合| 亚洲国产精品欧美一二99| 欧洲另类一二三四区| 偷拍亚洲欧洲综合| 精品国产露脸精彩对白| 国产激情精品久久久第一区二区 | 精品久久国产97色综合| 国产精品亚洲专一区二区三区| 中文字幕第一区二区| 91蜜桃婷婷狠狠久久综合9色| 亚洲乱码一区二区三区在线观看| 欧洲中文字幕精品| 日本vs亚洲vs韩国一区三区| 精品国产乱码久久久久久免费| 国产成人免费视| 亚洲美女视频在线| 91麻豆精品国产91| 粉嫩蜜臀av国产精品网站| 亚洲一区二区三区三| 欧美成人性福生活免费看| 成人三级伦理片| 污片在线观看一区二区| 国产欧美一区二区精品性|