数据结构---邻接表(模板)

const int MAXN=1000;
/*边节点*/
typedef struct node{
  char adjvex;//邻接边端节点
  int value;//权值
  node *next;//后继指针
}EdgeNode;

/*表节点*/
typedef struct VertexNode{//表节点
    char vertex;
    int num;//邻接边的数目
    EdgeNode *firstedge;//边指针
}VertexNode;

typedef VertexNode Adjlist[MAXN];

/*邻接表*/
typedef struct {
 Adjlist adjlist;//表头
 int n;//表中节点数
}AlGraph;

int main(){
    AlGraph *G=new AlGraph;//新建一个邻接表
   cin>>G->n;//输入邻接表的顶点数
    for(int i=1;i<G->n;i++){
        cin>>G->adjlist[i].vertex>>G->adjlist[i].num;//构件节点表
        G->adjlist[i].firstedge=NULL;//节点表初始化
       for(int j=1;j<=G->adjlist[i].num;j++){//输入边节点
           EdgeNode *p=new EdgeNode;
           EdgeNode *q;
           if(j==1){
               G->adjlist[i].firstedge=p;
               cin>>p->adjvex>>p->value;
               p->next=NULL;
               q=p;//记录当前节点
           }
           else{  
               p->next=q->next;//先继承前驱节点的后继节点
               q->next=p;//再连接前驱节点
               cin>>p->adjvex>>p->value;//输入边节点的权值和节点
               q=p;//记录当前节点
           }
        }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值