码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-11-05 19:23:10      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   os   使用   for   sp   

使用标准模板库(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来实现邻接链表的笔记

标签:style   blog   io   color   ar   os   使用   for   sp   

原文地址:http://www.cnblogs.com/Murcielago/p/4077027.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!