亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日本一区二区免费在线| 亚洲丝袜美腿综合| 色欧美片视频在线观看在线视频| 爽好久久久欧美精品| 亚洲国产电影在线观看| 国产精品视频一区二区三区不卡| 26uuu久久综合| 日韩欧美在线123| 日韩视频不卡中文| 亚洲免费观看高清完整版在线观看熊| 国产精品沙发午睡系列990531| 亚洲电影欧美电影有声小说| 亚洲成人三级小说| 99精品视频在线观看免费| 成人激情午夜影院| 成人一级片在线观看| 岛国一区二区三区| 久久网站热最新地址| 日本欧美一区二区在线观看| 日本午夜一区二区| 欧美人与禽zozo性伦| 亚洲精品一区二区精华| 日本一区二区成人在线| 狠狠色丁香婷综合久久| 国产河南妇女毛片精品久久久| 懂色av一区二区在线播放| 欧美在线视频你懂得| 日韩一区二区电影| 日韩精品亚洲一区| 日韩一区二区三区高清免费看看| 天天色综合成人网| 国产激情一区二区三区桃花岛亚洲| 欧美成人在线直播| 亚洲视频一区二区在线| www.日韩精品| 日韩三级免费观看| 久久99精品视频| 色婷婷av久久久久久久| 亚洲日本成人在线观看| 色婷婷精品久久二区二区蜜臀av| 一区二区三区免费在线观看| 美女在线一区二区| 色婷婷久久综合| 亚洲高清视频在线| 国产成人无遮挡在线视频| 国产精品午夜在线观看| 成人黄色小视频| 亚洲永久免费av| 成人午夜在线播放| 亚洲色图视频网| 91精品国产91久久久久久最新毛片| 国产午夜精品久久久久久免费视| 日本成人中文字幕| www国产成人| 91色在线porny| 中文字幕精品三区| 色噜噜狠狠色综合欧洲selulu| 国产三级精品在线| 在线观看国产91| 美女脱光内衣内裤视频久久网站| 国产亚洲精品7777| 欧美亚洲日本一区| 亚洲欧美激情视频在线观看一区二区三区 | 日韩欧美一二三| 亚洲福中文字幕伊人影院| 91精品欧美综合在线观看最新| 亚洲欧美日韩国产成人精品影院| 欧美精品丝袜中出| 亚洲成人一二三| 国产婷婷色一区二区三区| 欧美亚州韩日在线看免费版国语版| 免费视频最近日韩| 欧美电影免费观看高清完整版在线观看| 国产电影精品久久禁18| 五月天一区二区三区| 国产精品久久综合| 不卡电影一区二区三区| 蜜乳av一区二区三区| 亚洲视频在线观看三级| 久久尤物电影视频在线观看| 欧美日韩国产另类一区| 波多野洁衣一区| 国产一区二区三区在线观看免费| 日韩精品一区二区在线| 欧美又粗又大又爽| 懂色av一区二区夜夜嗨| 麻豆精品在线观看| 亚洲一区二区不卡免费| 中文字幕在线一区二区三区| 精品免费国产一区二区三区四区| 91国内精品野花午夜精品| caoporen国产精品视频| 精品无人码麻豆乱码1区2区 | 1区2区3区国产精品| 91美女福利视频| 国产伦精品一区二区三区免费| 午夜精品福利在线| 一区二区理论电影在线观看| 国产精品每日更新| 国产欧美日韩三级| 久久网这里都是精品| 精品日韩欧美一区二区| 欧美一区二区三区成人| 欧美群妇大交群的观看方式| 欧美三片在线视频观看| 国产一区二区三区在线观看精品| 日韩av在线播放中文字幕| 视频一区视频二区中文| 婷婷久久综合九色国产成人| 亚洲国产精品影院| 天堂成人国产精品一区| 性做久久久久久| 天涯成人国产亚洲精品一区av| 亚洲成人激情av| 日韩av在线播放中文字幕| 免费黄网站欧美| 黄页视频在线91| 国产精品香蕉一区二区三区| 亚洲大型综合色站| 亚州成人在线电影| 美女久久久精品| 国产精品影视天天线| 国产老女人精品毛片久久| 国产成人精品三级| 99这里都是精品| 欧美视频自拍偷拍| 91精品国产综合久久久久久| 日韩欧美国产综合| 久久久久久久久伊人| 91精品国产色综合久久不卡蜜臀| 日韩一区二区三区免费看 | 精品久久久久久久人人人人传媒| 精品国产一区二区三区久久久蜜月 | 成人性生交大片免费看在线播放| 成人av免费在线观看| 在线观看亚洲a| 欧美一区二区三区在线视频| 精品国产3级a| 日韩一区欧美一区| 奇米一区二区三区av| 成av人片一区二区| 欧美裸体一区二区三区| 欧美极品aⅴ影院| 亚洲大片在线观看| 国产激情精品久久久第一区二区| 91免费国产在线| 日韩三级视频在线观看| 国产精品天干天干在观线| 视频一区中文字幕| 成人国产精品视频| 欧美日韩免费一区二区三区视频| 久久综合资源网| 亚洲一区二区三区四区五区黄| 国产制服丝袜一区| 日本高清不卡在线观看| 精品少妇一区二区三区在线播放 | 欧美日韩一区不卡| 欧美激情综合在线| 日韩vs国产vs欧美| 色综合天天综合网天天看片| 成人爽a毛片一区二区免费| 欧美日韩一卡二卡三卡| 国产精品每日更新| 另类调教123区| 精品一区二区三区久久久| 91蜜桃在线免费视频| 久久这里只精品最新地址| 亚洲国产wwwccc36天堂| 北条麻妃国产九九精品视频| 日韩精品中午字幕| 亚洲电影一级片| 色综合天天综合在线视频| 国产三级三级三级精品8ⅰ区| 亚洲午夜三级在线| 91麻豆国产精品久久| 国产精品视频第一区| 韩国三级中文字幕hd久久精品| 欧美精品一二三| 亚洲成人久久影院| 色网综合在线观看| 国产精品成人免费在线| 国产成人一区二区精品非洲| 日韩美一区二区三区| 日韩在线一区二区| 欧美日本一区二区三区| 一区二区三区在线视频播放 | 中文字幕亚洲精品在线观看| 国产一区999| 久久久久久久久99精品| 看电视剧不卡顿的网站| 欧美一区二区三区不卡| 日本vs亚洲vs韩国一区三区| 69堂亚洲精品首页| 青青草97国产精品免费观看无弹窗版| 欧美日韩精品一区二区三区四区| 亚洲一区av在线| 欧美日韩一区中文字幕| 亚洲一区二区三区视频在线播放| 欧美中文一区二区三区| 亚洲国产日日夜夜|