数组链表的简单实现
2016-03-08 22:52
357 查看
链表的线性数组实现
#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;
}
#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;
}
相关文章推荐
- Android群英传笔记——第三章:Android控件架构与自定义控件讲解
- MD5加密算法JAVA实现
- 玩了下体像素软件MagicaVoxel
- Android群英传笔记——第三章:Android控件架构与自定义控件讲解
- Java clone()
- 00002笔试题(JAVA)
- 关灯游戏
- 亿级用户的新浪微博平台架构
- JQuery 读取 xml
- 杭电oj 1108 最小公倍数
- 正则表达式 与grep
- 依赖注入之Bean实例化前的准备
- 获取 <Select>标签选中的文本
- Android Notification总结
- MyEclipse创建struts.xml
- 深拷贝与浅拷贝
- 方法论之设计思想
- HTML+CSS基础篇(一)——认识标签
- UART接口【转载】
- 剪刀石头布 (人机对战)