首页 > 代码库 > 关于如何利用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来实现邻接链表的笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。