【发布时间】:2013-08-11 00:25:54
【问题描述】:
我正在尝试设计一个程序,它从文件中获取数据,然后对唯一数据进行编号,链表还包含父列表和子列表。
数据结构:
____A
/ |
B C
| / \
E--> F G
| | |
I J K
节点可以有多个下一个节点(例如A和C),并且可以有多个前一个节点。
文本文件包含这样的数据,我将从文件中获取数据并将它们转换为链表:
A
B
E
I
A
C
E
F
J
A
C
G
K
我的问题:是否可以创建具有多个下一个或多个上一个节点的节点的链表,如果可以,结构会是什么样子?
我尝试过的:
我创建了一个结构体,其中包含一个由 4 个整数组成的数组,用于父子节点。
struct abcd{
char data;
int nodeid;
int parent[4];
int child[4];
struct abcd *next;
}
所以父数组保存最近一个节点的节点ID(可以不止一个,因为例如E(B&C指向它)-->(节点ID - 1) .
子数组保存 instant next 节点的节点 ID(节点 ID +1)。
A 或任何其他节点没有重复节点。
输出:
1 : A <--
2 : B <-- 1
3 E <-- 2,5
4 : I <-- 3
5 : C <-- 1
6 : F <-- 3
7 : J <-- 6
8 : G <-- 5
9 : K <-- 8
希望它清楚,请让我不知道应该如何实施它。 问候。
【问题讨论】:
-
你应该叫它图
-
你实际上并没有说你的系统是否可以有循环 A->D->A。如果不是,这就是有向无环图,这很重要,因为有很多关于 DAG 的研究。一般来说,保证为非循环的图更容易安全导航(不需要历史/循环检测)。
标签: c linked-list doubly-linked-list