图.邻接列表表示法

来源:互联网 发布:电脑软件常见故障排除 编辑:程序博客网 时间:2024/05/21 22:05



//邻接数组表示法#include<iostream>#include<cstdlib>#define MAX 5using namespace std;struct Node{int vertex;int weight;struct Node* next;};typedef struct Node* Graph;Node Head[MAX];int flag = 0;   //0为无向图 1为有向图 void init(){int i;for (i = 0; i<MAX; i++){Head[i].vertex = i;Head[i].next = NULL;}}void printGraph(){Graph pointer;int i;for (i = 0; i<MAX; i++){pointer = &(Head[i]);cout << '[' << i << ']';while (pointer->next != NULL){pointer = pointer->next;cout << "->[" << pointer->vertex << ']' << pointer->weight;}cout << endl;}}void GreatGraph(int start, int end, int weight){Graph New = (Graph)malloc(sizeof(struct Node));Graph pointer;if (New != NULL){New->vertex = end;New->weight = weight;New->next = NULL;pointer = &(Head[start]);while (pointer->next != NULL)pointer = pointer->next;pointer->next = New;if (flag == 0){New = (Graph)malloc(sizeof(struct Node));New->vertex = start;New->weight = weight;New->next = NULL;pointer = &(Head[end]);while (pointer->next != NULL)pointer = pointer->next;pointer->next = New;}}}int main(void){int start, end, weight, n, i;init();cout << "请输入(0:无向图 1:有向图):";cin >> flag;cout << "请输入要添加的边数:";cin >> n;for (i = 1; i <= n; i++){cin >> start >> end >> weight;GreatGraph(start, end, weight);}printGraph();return 0;return 0;}


0 0
原创粉丝点击