数组链表的简单实现

链表的线性数组实现

#include"iostream"
#include"cstdio"


using namespace std;


int u[100];                //第i条边的起始点
int v[100];                //第i条边的终止点
int w[100];              //第i条边的权值
int n;                       //边数
int first[100];              //存储起点为 i 的第一条边的编号
int next[100];             //存储第 i 条边的下一条边的编号
int x,y,z;


int main()
{
int t;
cin>>n;
for(int i=1;i<=n;i++)                        //万分注意first数组开始必须初始化为-1,此-1代表链表中的NULL;
{
first[i]=-1;
}
for(int i=1;i<=n;i++)
{
cin>>x>>y>>z;
u[i]=x;
v[i]=y;
w[i]=z;
next[i]=first[u[i]];                        //核心语句:含义:第i条边的下一条边的编号是以u[i]为起点的第一条边的编号
first[u[i]]=i;                                 //以u[i]为起点的第一条边的编号是目前最新的i值
}
t=first[1];             //此时只是举例,以1位起点的边序列的举例
while(t!=-1)
{
printf("%d %d %d\n",u[t],v[t],w[t];                      //打印边的信息
t=next[t];                        //往后推边
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值