首页 > 代码库 > 关于如何利用vector来实现邻接链表的笔记

关于如何利用vector来实现邻接链表的笔记

使用标准模板库(STL)中的标准模板 std::vector,可以让我快速的使用邻接链表。一些基本的用法如下:

 

#include <iostream>#include <stdio.h>     #include <vector>using namespace std;struct Edge{      //定义结构体,用来表示一条边    int nextNode; //下一个结点的编号    int cost;     //该边的权重};int main()   //利用vector来实现邻接链表中的应用{    vector<Edge> edge[10];  //定义一个数组,数组中的元素是向量    for(int i=0;i<=9;i++){  //初始化        edge[i].clear();    }    Edge temp1;    temp1.nextNode=3;    temp1.cost=39;    edge[1].push_back(temp1);   //将该边加入到结点1的单链表中    Edge temp2;    temp2.nextNode=4;    temp2.cost=24;    edge[1].push_back(temp2);   //将该边加入到结点1的单链表中    Edge temp3;    temp3.nextNode=5;    temp3.cost=16;    edge[1].push_back(temp3);   //将该边加入到结点1的单链表中    edge[1].erase(edge[1].begin()+2,edge[1].begin()+3);  //删除与结点1相邻的结点,                                                         //参数为(vector.begin()+i,vector.begin()+i+1)                                                         //i为要删除的结点编号(相当于数组下标)                                                         //比如此时要删除与结点1相邻的第3个结点(从0开始)    for(int i=0;i<=edge[1].size()-1;i++){   //遍历与结点1相邻的所有结点        int nextNode=edge[1][i].nextNode;   //到这儿就相当于2维数组了        int cost=edge[1][i].cost;        printf("%d %d\n",nextNode,cost);    }    return 0;}

 

关于如何利用vector来实现邻接链表的笔记