Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- #define size 10
- int pick[size][size] = {
- { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 },
- { 1, 0, 0, 1, 1, 0, 0, 0, 0, 0 },
- { 1, 0, 0, 0, 0, 1, 1, 0, 0, 0 },
- { 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 },
- { 0, 1, 0, 0, 0, 0, 0, 1, 0, 0 },
- { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 },
- { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0 },
- { 0, 0, 0, 1, 1, 0, 0, 0, 0, 1 },
- { 0, 0, 0, 0, 0, 1, 1, 0, 0, 1 },
- { 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }, };
- class node{
- public:
- int data;
- node*next=NULL ;
- };
- class list
- {
- public:
- void push(int);
- list(){ head = NULL; }
- void print();
- node *head;
- private:
- };
- class graph
- {
- public:
- graph(){ for (int i = 0; i < size; i++){ ima[i] = new node; } }
- node*ima[size];
- void creat();
- void list();
- };
- void graph::creat(){
- for (int i = 0; i < size; i++)
- {
- for (int j = 0; j < size; j++)
- {
- node*x = new node();
- x->data = j;
- if (pick[i][j] == 1)
- {
- node*p = ima[i];
- while (p->next != NULL)
- p = p->next;
- p->next = x;
- }
- }
- }
- }
- void graph::list(){
- for (int i = 0; i < size; i++)
- {
- node*p = ima[i];
- cout << "頂點" << i + 1 << ":";
- while (p->next != 0)
- {
- p = p->next;
- cout << "[" << p->data+1 << "]";
- }
- printf("\n");
- }
- }
- void visit(int i, int*isvisit, node**head)
- {
- node*ptr;
- isvisit[i] = 1;
- cout << "visit:" << i + 1 << endl;
- ptr = head[i]->next;
- while (ptr != NULL)
- {
- if (isvisit[ptr->data] == 0)
- visit(ptr->data, isvisit, head);
- ptr = ptr->next;
- }
- }
- int main()
- {
- graph gr1;
- gr1.creat();
- gr1.list();
- int isvisit[size];
- for (int i = 0; i < size; i++)
- isvisit[i] = 0;
- visit(0, isvisit, gr1.ima);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement