数据结构之图的邻接表的实现

1.邻接表的存储方式
(1)是一种顺序存储和链式存储相结合和存储方法
(2)顺序存储用来保存顶点的信息
(3)链式存储用来保存图中边或弧的信息
(4)使用一个一维数组,其中的每一个元素都包含两个域:顶点域(data),和头指针域(firstadj)
(5)邻接表中每一个结点都依附在该顶点的一条边上,称为边结点
(6)边结点包含三个域,邻接点域(adjvex,对应着一维数组的索引号),数据域(inof,存储权值),链域(nextadj,指向于依附于该顶点的下一个边结点)
2.添加顶点

public boolean addVex(E v) {
   
	//判断数组是否满了
	if(numOfVexs>=maxNumOfVexs) {
   
		return false;
	}
	//定义一个顶点
	VNode<E> vex = new VNode<E>();
	//将添加的元素赋值给顶点vex的data域
	vex.data=v;
	//将顶点vex存放进一维数组中,且顶点数量加1
	vexs[numOfVexs++]=vex;
	return true;
}

3.删除顶点

public boolean deleteVex(E v) {
   
	//遍历数组
	for(int i=0;i<numOfVexs;i++) {
   
		//判断数组中的顶点是否与参数相同
		if(vexs[i].data.equals(v)) {
   
			//如果相同则将该顶点前面的顶点向前移动一步
			for(int j=i;j<numOfVexs-1;j++) {
   
				vexs[j]=vexs[j+1];
			}
			//将数组最后一位元素赋值为空
			vexs[numOfVexs-1]=null;
			//数组元素个数减1
			numOfVexs--;
			//创建指针current和previous
			ENode current;
			ENode previous;
			//遍历数组
			for(int j=0;j<numOfVexs;j++) {
   
				//判断数组元素vexs[j]的头指针是否为空,如果为空则跳出此次循环
				if(vexs[j].firstadj
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值