图的存储之邻接表

本文提出了一种简化的线性表实现方案,对比陈越书中较为复杂的实现方式,此方案通过减少typedef使用及简化变量命名来提升学习效率。文章包含完整的C++代码示例,演示了如何初始化线性表及添加元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//个人认为,陈越书上的相关代码过于繁琐,如太多的typedef和较长的变量命名,对于学生,实用性差;所以自己写了个线性表,才疏学浅,还望读者批评指正
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define MAXN 100
int n,m;
struct AdjList{
	int v;
	int weight;
	struct AdjList* next;
}map[100];
void Init(){
	for(int i=1;i<=n;i++){
		map[i].v=i;
		map[i].next=NULL;
	}
	return;
}
void Add(int x,int y,int w){
	struct AdjList* temp=(struct AdjList*)malloc(sizeof(struct AdjList));
	temp->v=y;
	temp->weight=w;
	temp->next=map[x].next;
	map[x].next=temp;
	return;
}
int main(){
	int x,y,w;
	cin>>n>>m;
	Init();
	for(int i=1;i<=m;i++){
		cin>>x>>y>>w;
		Add(x,y,w);//默认有向图 无向图得加两条边
	}
}
//如果用到 指向一个顶点的点 等相关数据,可以让next指向 以当前节点为终点的边 的起点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值