亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? graphtype.h

?? C++編成數據結構與程序設計方法 D.S.Malk編著
?? H
字號:

#ifndef H_graph
#define H_graph

#include <iostream>
#include <fstream>
#include <iomanip>
#include "linkedList.h"
#include "unorderedLinkedList.h"
#include "linkedQueue.h"

using namespace std;

class graphType
{
public:
    bool isEmpty() const;
      //Function to determine whether the graph is empty.
      //Postcondition: Returns true if the graph is empty;
      //               otherwise, returns false.

    void createGraph();
      //Function to create a graph.
      //Postcondition: The graph is created using the  
      //               adjacency list representation.

    void clearGraph();
      //Function to clear graph.
      //Postcondition: The memory occupied by each vertex 
      //               is deallocated.

    void printGraph() const;
      //Function to print graph.
      //Postcondition: The graph is printed.

    void depthFirstTraversal();
      //Function to perform the depth first traversal of
      //the entire graph.
      //Postcondition: The vertices of the graph are printed 
      //               using depth first traversal algorithm.

    void dftAtVertex(int vertex);
      //Function to perform the depth first traversal of 
      //the graph at a node specified by the parameter vertex.
      //Postcondition: Starting at vertex, the vertices are 
      //               printed using depth first traversal 
      //               algorithm.

    void breadthFirstTraversal();
      //Function to perform the breadth first traversal of
      //the entire graph.
      //Postcondition: The vertices of the graph are printed 
      //               using breadth first traversal algorithm.

    graphType(int size = 0); 
      //Constructor
	  //Postcondition: gSize = 0; maxSize = size;
      //               graph is an array of pointers to linked
      //               lists.

    ~graphType();
      //Destructor
      //The storage occupied by the vertices is deallocated.

protected:
    int maxSize;    //maximum number of vertices
    int gSize;      //current number of vertices
    unorderedLinkedList<int> *graph; //array to create 
                                     //adjacency lists 

private:
    void dft(int v, bool visited[]);
      //Function to perform the depth first traversal of 
      //the graph at a node specified by the parameter vertex.
      //This function is used by the public member functions
      //depthFirstTraversal and dftAtVertex.
      //Postcondition: Starting at vertex, the vertices are 
      //               printed using depth first traversal 
      //               algorithm.
};

bool graphType::isEmpty() const
{
    return (gSize == 0);
}

void graphType::createGraph()
{
    ifstream infile;
    char fileName[50];

    int index;
    int vertex;
    int adjacentVertex;

    if (gSize != 0)	//if the graph is not empty, make it empty
        clearGraph();

    cout << "Enter input file name: ";
    cin >> fileName;
    cout << endl;

    infile.open(fileName);

    if (!infile)
    {
        cout << "Cannot open input file." << endl;
        return;
    }

    infile >> gSize;	//get the number of vertices

    for (index = 0; index < gSize; index++)
    {
        infile >> vertex;
        infile >> adjacentVertex;

        while (adjacentVertex != -999)
        {
            graph[vertex].insertLast(adjacentVertex);
            infile >> adjacentVertex;
        } //end while
    } // end for

    infile.close();
} //end createGraph

void graphType::clearGraph()
{
    int index;

    for (index = 0; index < gSize; index++)
        graph[index].destroyList();

    gSize = 0;
} //end clearGraph


void graphType::printGraph() const
{
    int index;

    for (index = 0; index < gSize; index++)
    {
        cout << index << " ";
        graph[index].print();
        cout << endl;
    }

    cout << endl;
} //end printGraph

void graphType::depthFirstTraversal()
{
    bool *visited; //pointer to create the array to keep 
                   //track of the visited vertices
    visited = new bool[gSize];

    int index;

    for (index = 0; index < gSize; index++) 
        visited[index] = false;
	
        //For each vertex that is not visited, do a depth 
        //first traverssal
    for (index = 0; index < gSize; index++)	
        if (!visited[index]) 
            dft(index,visited);
    delete [] visited;
} //end depthFirstTraversal

void graphType::dft(int v, bool visited[])
{
    visited[v] = true;
    cout << " " << v << " ";  //visit the vertex

    linkedListIterator<int> graphIt;

        //for each vertex adjacent to v
    for (graphIt = graph[v].begin(); graphIt != graph[v].end();
                                     ++graphIt)
    {
        int w = *graphIt;
        if (!visited[w])
            dft(w, visited);
    } //end while
} //end dft

void graphType::dftAtVertex(int vertex)
{
    bool *visited;

    visited = new bool[gSize];

    for (int index = 0; index < gSize; index++)
        visited[index] = false;

    dft(vertex, visited);

    delete [] visited;
} // end dftAtVertex


void graphType::breadthFirstTraversal()
{
    linkedQueueType<int> queue;

    bool *visited;
    visited = new bool[gSize];

    for (int ind = 0; ind < gSize; ind++)
        visited[ind] = false;	//initialize the array 
                                //visited to false

    linkedListIterator<int> graphIt;

    for (int index = 0; index < gSize; index++)
        if (!visited[index])
        {
            queue.addQueue(index);
            visited[index] = true;
            cout << " " << index << " ";

            while (!queue.isEmptyQueue())
            {
                int u = queue.front();
                queue.deleteQueue();

                for (graphIt = graph[u].begin(); 
                     graphIt != graph[u].end(); ++graphIt)
                {
                    int w = *graphIt;
                    if (!visited[w])
                    {
                        queue.addQueue(w);
                        visited[w] = true;
                        cout << " " << w << " ";
                    }
                }
            } //end while
        }
		
    delete [] visited;
} //end breadthFirstTraversal

    //Constructor
graphType::graphType(int size)
{
    maxSize = size;
    gSize = 0;
    graph = new unorderedLinkedList<int>[size];
}

    //Destructor
graphType::~graphType()
{
    clearGraph();
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲丝袜美腿综合| 一区二区免费视频| 美国毛片一区二区| 欧美日韩国产大片| 亚洲视频一区二区免费在线观看 | 欧美国产97人人爽人人喊| 日日摸夜夜添夜夜添亚洲女人| 一本大道久久a久久综合| 中文在线一区二区| 国产美女一区二区| 日韩视频在线你懂得| 午夜精品福利一区二区蜜股av| 在线观看亚洲精品| 亚洲精品亚洲人成人网在线播放| 久久99久久精品欧美| 色综合天天在线| 成人免费在线视频| 99久久久久久99| 中文字幕一区二区三区四区 | 中文字幕一区二区日韩精品绯色| 精品一区二区在线视频| 欧美色图第一页| 欧美国产一区二区| 国产盗摄一区二区| 国产人久久人人人人爽| 国产精品91xxx| 久久久精品一品道一区| 高清国产午夜精品久久久久久| 337p日本欧洲亚洲大胆精品| 天天色图综合网| 777a∨成人精品桃花网| 亚洲丶国产丶欧美一区二区三区| 一本大道综合伊人精品热热| 亚洲精品国产高清久久伦理二区| av不卡在线播放| 中文字幕中文字幕在线一区| 97se亚洲国产综合在线| 国产精品午夜在线观看| 成人的网站免费观看| 日韩理论在线观看| 日本精品视频一区二区| 日韩美女视频一区二区| 91麻豆免费在线观看| 亚洲综合偷拍欧美一区色| 欧美三电影在线| 亚洲成av人**亚洲成av**| 91精品婷婷国产综合久久竹菊| 免费观看久久久4p| 2019国产精品| 国产成人亚洲综合a∨猫咪| 国产精品女同一区二区三区| 91片在线免费观看| 午夜精品久久久久| 91麻豆精品国产自产在线| 午夜av一区二区三区| 91精品福利在线一区二区三区 | 欧美亚洲综合久久| 日本不卡一区二区| 精品99999| 成人ar影院免费观看视频| 樱桃国产成人精品视频| 欧美美女一区二区三区| 国产在线乱码一区二区三区| 国产精品天干天干在观线| 色老综合老女人久久久| 欧美aⅴ一区二区三区视频| 久久久久久久久久久久久女国产乱 | 日本成人在线视频网站| 精品日韩99亚洲| 成人一道本在线| 亚洲国产日韩精品| 久久久久久久免费视频了| 91农村精品一区二区在线| 日韩1区2区3区| 久久精品欧美一区二区三区不卡| 91免费观看国产| 美女在线一区二区| 国产精品网曝门| 91精品黄色片免费大全| 国产精品99久久久久久久女警 | 欧美精品一级二级三级| 国产伦精品一区二区三区视频青涩 | ...中文天堂在线一区| 欧美日韩精品欧美日韩精品一| 久久国产福利国产秒拍| 国产精品欧美极品| 欧美日韩国产高清一区| 国产999精品久久久久久绿帽| 一区二区日韩电影| 久久综合给合久久狠狠狠97色69| 91在线国产观看| 日韩二区三区四区| 一区二区中文字幕在线| 欧美一级日韩不卡播放免费| 成人av在线资源网| 美女视频免费一区| 国产精品嫩草99a| 欧美男生操女生| yourporn久久国产精品| 久久国产精品无码网站| 一级日本不卡的影视| 久久久久久久电影| 欧美日韩久久久| 91在线porny国产在线看| 久久精品国产网站| 一区二区三区日韩欧美| 国产欧美精品一区二区色综合| 欧美网站大全在线观看| 国产一区二区三区黄视频| 国产综合久久久久久鬼色| 亚洲一区二区视频| 午夜亚洲国产au精品一区二区| 久久久欧美精品sm网站| 亚洲欧洲国产专区| 精品播放一区二区| 在线亚洲欧美专区二区| 亚洲一区二区三区小说| 欧美色综合影院| 国产在线播精品第三| 亚洲午夜影视影院在线观看| 亚洲午夜成aⅴ人片| 国产精品亲子伦对白| 欧美激情中文字幕一区二区| 2022国产精品视频| 国产欧美日韩在线视频| 国产精品无人区| 欧美优质美女网站| 国产欧美视频一区二区| 亚洲成av人片观看| 欧美日韩高清不卡| 性久久久久久久久久久久 | 国产黄色精品视频| 国产精品毛片久久久久久久| 国产精品亚洲成人| 亚洲午夜羞羞片| 99久久久久久| 国产精品久久久久7777按摩| 国产.欧美.日韩| 亚洲欧美在线视频| 欧美剧情片在线观看| 国产精品乱人伦中文| 欧洲视频一区二区| 国产精品女同互慰在线看| 91成人国产精品| 亚洲成av人综合在线观看| 91啪在线观看| 午夜精品一区二区三区电影天堂| 91性感美女视频| 亚洲第一狼人社区| 日韩西西人体444www| 国产成人鲁色资源国产91色综 | 午夜国产精品影院在线观看| 色婷婷av一区二区三区之一色屋| 久久综合久久综合久久| 国产黄色精品网站| 国产精品嫩草影院com| 一本久久a久久免费精品不卡| 久久久久97国产精华液好用吗| 国产美女视频一区| 国产精品不卡在线| 欧美一区日韩一区| 欧美视频一区二区三区四区 | 91成人免费在线视频| 欧美在线观看18| 欧美精品久久久久久久久老牛影院| 欧美一级片在线看| 欧美xxxx老人做受| 日韩欧美在线观看一区二区三区| 精品国产乱码久久久久久久| 99久久99久久久精品齐齐| 亚洲一区二区影院| 日本不卡的三区四区五区| 日韩精品国产精品| 国产精品不卡一区| 亚洲欧美一区二区三区国产精品 | 91香蕉视频在线| 日本韩国欧美在线| 欧美综合天天夜夜久久| 欧美日韩国产大片| 精品久久久久久久久久久久包黑料| 91精品国产一区二区三区香蕉| 91成人在线精品| 精品国产污污免费网站入口| 欧美精品第1页| 久久精品无码一区二区三区| 中文文精品字幕一区二区| 久久久国产午夜精品| 亚洲女与黑人做爰| 一级特黄大欧美久久久| 婷婷夜色潮精品综合在线| 精品一区二区三区在线视频| 国产一区二区三区综合| 国产乱码一区二区三区| 99久久综合国产精品| 国产精品正在播放| 一本色道久久综合精品竹菊| 99国产精品视频免费观看| 国产suv精品一区二区883| 欧美日韩在线不卡| 欧美国产日产图区|