2015-10-13 73 views
0

因此,我使用vector,list和pair創建了這個鄰接列表,現在我想將它打印在屏幕上。我看過一些代碼打印矢量<對< ..>>,但我不知道如何做一個清單。我在最後放置了一個迭代器,但我不知道從那裏做什麼。這裏是代碼:打印帶權重的鄰接列表

#include <iostream> 
#include <vector> 
#include <list> 
#include <utility> 
#define MAX 18 

using namespace std; 
int c=1; 

int main() { 
vector <list<pair <int, int> > > lista(MAX); 

lista[1].push_back(make_pair(2,10)); 
lista[1].push_back(make_pair(12,5)); 

lista[2].push_back(make_pair(1,10)); 
lista[2].push_back(make_pair(3,1)); 
lista[2].push_back(make_pair(11,3)); 

lista[3].push_back(make_pair(2,1)); 
lista[3].push_back(make_pair(4,6)); 

lista[4].push_back(make_pair(3,6)); 
lista[4].push_back(make_pair(5,3)); 

lista[5].push_back(make_pair(4,3)); 
lista[5].push_back(make_pair(6,8)); 

lista[6].push_back(make_pair(5,8)); 
lista[6].push_back(make_pair(7,7)); 
lista[6].push_back(make_pair(8,9)); 

lista[7].push_back(make_pair(6,7)); 

lista[8].push_back(make_pair(9,4)); 

lista[9].push_back(make_pair(8,4)); 
lista[9].push_back(make_pair(10,1)); 

lista[11].push_back(make_pair(13,0)); 

lista[12].push_back(make_pair(1,5)); 
lista[12].push_back(make_pair(13,3)); 

lista[13].push_back(make_pair(11,0)); 
lista[13].push_back(make_pair(12,3)); 
lista[13].push_back(make_pair(15,4)); 

lista[14].push_back(make_pair(15,2)); 

lista[15].push_back(make_pair(13,4)); 
lista[15].push_back(make_pair(17,3)); 

lista[16].push_back(make_pair(15,1)); 

lista[17].push_back(make_pair(15,3)); 

vector <list<pair <int, int> > >::iterator i; 

///Time to print it! 

return 0; 
} 

這是圖表,如果你想知道:http://prntscr.com/8qur69

+0

這是讀取的文件(或RTD作爲一些縮寫的情況下它)。查看文檔並找到訪問每個數據結構元素的函數。然後,按順序放置它們:最外層結構(矢量),最內層最後(對)。 [矢量](http://www.cplusplus.com/reference/vector/vector/),[列表](http://www.cplusplus.com/reference/list/list/),[配對](http: //www.cplusplus.com/reference/utility/pair/)。 – CodeMouse92

+0

恩,謝謝你的建議。我在正確的軌道上,我只是混淆了引用一些變量。 –

回答

0

我只希望這是你想要的格式。

某些代碼將它寫

template<typename cType, typename func> 
void for_all(const cType& v, func f) { 
    std::for_each(v.begin(), v.end(), f); 
} 

template<typename dType> 
void print_it(const dType& pod, const string& seperator) { 
    cout << pod << seperator; 
} 

template<typename dType> 
void print_it(const std::pair<dType, dType>& p, const string& seperator) { 
    cout << "("; 
    print_it(p.first, string(", ")); 
    print_it(p.second, string("")); 
    cout << ")" << seperator; 
} 

template<typename dType> 
void print_it(const std::list<dType>& v, const string& seperator) { 
    const string sep = "->"; 
    cout << sep; 
    for_all(v, [&sep](const dType& it) { print_it(it, sep); }); 
    std::cout << "nullptr" << seperator; 
} 

template<typename dType> 
void print_it(const vector<dType>& v, const string& seperator) { 
    const string sep = "\n"; 
    for_all(v, [&sep](const dType& it) { print_it(it, sep); }); 
    cout << seperator; 
} 

template<typename dType> 
void print_it(const dType& p) { 
    print_it(p, "done\n"); 
} 

和在主要添加

///Time to print it! 
print_it(lista); 

輸出::

->nullptr 
->(2, 10)->(12, 5)->nullptr 
->(1, 10)->(3, 1)->(11, 3)->nullptr 
->(2, 1)->(4, 6)->nullptr 
->(3, 6)->(5, 3)->nullptr 
->(4, 3)->(6, 8)->nullptr 
->(5, 8)->(7, 7)->(8, 9)->nullptr 
->(6, 7)->nullptr 
->(9, 4)->nullptr 
->(8, 4)->(10, 1)->nullptr 
->nullptr 
->(13, 0)->nullptr 
->(1, 5)->(13, 3)->nullptr 
->(11, 0)->(12, 3)->(15, 4)->nullptr 
->(15, 2)->nullptr 
->(13, 4)->(17, 3)->nullptr 
->(15, 1)->nullptr 
->(15, 3)->nullptr 
done