⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delvex.cpp

📁 次界面好用但是也可能有许多不足还希望有贤人志士指点迷津!
💻 CPP
字号:
#include"traffic.h"

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;
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -