無向圖的鏈式儲存(代碼)

來源:互聯網
上載者:User

# include <stdlib.h>
# include <iostream.h>

# define zhi 20//最都能存放結點的個數

int diannum;//存放頂點的個數

//存放頂點資訊和跟該點有關係的下一個頂點的指標
struct dian
{
  char data;//存放頂點的資訊
  struct bian *next;//存放邊的地址
};

//存放頂點和頂點的關係的值
struct bian
{
  int data;//存放該頂點在一維數組中的下標
  struct bian *next;//存放邊的地址
};

//初始化圖
void chushihua(struct dian *&tu)
{
 int i;
 tu=(struct dian *)malloc(zhi * sizeof(struct dian));//為圖開闢相應的空間
 
 for(i=0;i<zhi;i++)
(tu+i)->next=NULL;//賦初值
}

//圖資訊的輸入
void shuru(struct dian *&tu)
{
  int i;
  int k;
  int j;//存放標誌
  struct bian *p;
    
  cout<<"請輸入要輸入圖的頂點的總數:";
  cin>>diannum;

  //頂點資訊的輸入操作
  cout<<"\n";
  for(i=0;i<diannum;i++)
  {
    cout<<"請輸入第"<<i+1<<"頂點的資訊:";
cin>>(tu+i)->data;
  }
  cout<<"頂點資訊輸入完畢!";

  //頂點和頂點關係的輸入
  for(i=0;i<diannum;i++)
  {
k=1;//一個標誌
    cout<<"\n\n請輸入可以和第"<<i+1<<"個頂點相通的所有頂點的序號!\n";
cout<<"請輸入第"<<k<<"個頂點的序號(0為退出):";
cin>>j;
while(j!=0)
{
 if(k==1)//響應標誌的操作
 {
   (tu+i)->next=(struct bian *)malloc(sizeof(struct bian));
p=(tu+i)->next;
p->data=j;
p->next=NULL;
 }
 else
 {
   p->next=(struct bian *)malloc(sizeof(struct bian));
p=p->next;
p->data=j;
p->next=NULL;
 }

 k=k+1;
 cout<<"請輸入第"<<k<<"個頂點的序號(0為退出):";
 cin>>j;
}
  }
  cout<<"頂點和頂點的關係輸入完畢!\n\n";
}

//圖的資訊的輸出
void shuchu(struct dian *tu)
{
  int i;
  struct bian * p;
  cout<<"圖的資訊的輸出:\n";
  //中心思想:從第一個頂開始,輸出所有和第一個頂點直接相連的頂點
  for(i=0;i<diannum;i++)
  {
    cout<<"頂點"<<(tu+i)->data<<"和那些頂點是直接相連的關係:";

p=(tu+i)->next;
while(p!=NULL)
{
 cout<<(tu+i)->data<<"----"<<(tu+(p->data-1))->data<<"    ";
 p=p->next;
}
cout<<"\n";
  }
}

//主函數
void main()
{
  struct dian * tu;//定義圖的頭
  int option;//存放使用者的操作
  chushihua(tu);//給圖的頭分配相應的空間,並給相應的項賦初值
  
  option=0;
  while(option!=3)
  {
    cout<<"\n       菜單\n\n";
cout<<"    1、圖的輸入\n";
cout<<"    2、圖的輸出\n";
cout<<"    3、退出\n\n";
cout<<"請選擇操作:";
cin>>option;
switch(option)
{
case 1:
shuru(tu);
break;
case 2:
shuchu(tu);
break;
case 3:
break;
default:
break;
}
  }

}


      心得:標記的運用!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.