11.24学习总结


(1)今日安排
邻接表存储实现有向网构建
题目要求:以邻接表的存储方式,创建一个有向网,顶点为字符型。
源代码如下:

#include
#include
using namespace std;
const int N=1010;
struct arc{
    int e;
    arc* next;
    int w;
};
struct {
    int n,m;
    char vers[N];
    arc arcs[N];
}gra;
int find(char c){
    for(int i=0;i){
        if(gra.vers[i]==c){
            return i;
        }
    }
    return -1;
}
void add(int u,int v,int w){
    arc* p=new arc();
    p->e=v;
    p->next=gra.arcs[u].next;
    p->w=w;
    gra.arcs[u].next=p;
}
void add(char x,char y,int w){
    int u=find(x),v=find(y);
    if(~u&&~v){
        add(u,v,w);
    }
    else{
        cout<<"error";
        exit(0);
    }
}
int main(){
    cin>>gra.n>>gra.m;
    if(gra.n==0||gra.n==1&&gra.m>1){
        cout<<"error";
        return 0;
    }
    for(int i=0;i){
        cin>>gra.vers[i];
    }
    for(int i=0;i){
        char u,v;
        int w;
        cin>>u>>v>>w;
        add(u,v,w);
    }
    for(int i=0;i){
        cout<<gra.vers[i];
        arc* p=gra.arcs[i].next;
        while(p!=NULL){
            cout<<"->"<e<<' '<w;
            p=p->next;
        }
        if(i!=gra.n-1) cout<<endl;
    }
    return 0;
}

相关