【发布时间】:2014-02-25 01:41:13
【问题描述】:
我对整个 C 编程非常陌生(几周),所以请放轻松 ;-)
项目详情: 我目前正在制作一个火车旅行计划系统,使用给定的火车计划来找到到特定目的地的最短路线。这是通过制作一个图、一个用于排序的二进制堆,然后是 dijkstra 算法。因此有些混乱的结构(对不起!认为熟悉它们是最好的)。
我的问题:我构建了一个链表,将数据作为 void 在结构中(使其更通用以便重用),但是当我想在使用结构时转换数据时,我得到语法错误。
结构:
typedef struct linked_list{
void *data;
struct linked_list *next;
struct linked_list *previous;
} linked_list;
还有我的,可能是明显的错误:
if(current->((edge*)data)->to->distance > ...
如果我将数据类型更改为结构中的边缘(而不是尝试这个特技),这非常有效,但在这种情况下强制转换显然不起作用。
如果需要更多详细信息,请告诉我。
【问题讨论】:
-
建议:如此多的间接级别令人困惑,并且通常表明您的代码需要以不同的方式模块化。
-
我想了很多,我的问题是我使用了很多结构(对于图中的顶点和边),它们使用结构保存在链表中。所以获取数据变得混乱。会尽量记住这是不好的做法。