【发布时间】:2013-11-03 21:05:07
【问题描述】:
我有一个链表,它的元素是类型
typedef struct List * News;
struct List
{
char * Text;
News NextN;
};
在主函数中,我声明了一个 News 类型的数组,如下所示
News PTH[50];
for (i = 0; i < 50; i++)
{
PTH[i] = (News) malloc(sizeof(struct List));
PTH[i] -> Text = NULL;
PTH[i] -> NextN = NULL;
}
我在列表的开头添加了新节点
if ( PTH[i] -> Text == NULL)
PTH[i] -> Text = msg;
else
{
t -> Text = msg;
t -> NextN = PTH[i];
PTH[i] = t;
}
其中msg 是一个长度为 2000 的 char 数组;然后尝试用
PTH[i] -> Text指向的文本
p = PTH[i];
if (p -> Text != NULL)
{
printf("%s", p -> Text);
p = p -> NextN;
}
while (p != NULL)
{
printf("%s", p -> Text);
p = p -> NextN;
}
}
该算法只添加一个节点。错误是我如何定义 PTH 或者我将节点放入列表中的方式有错误。
【问题讨论】:
-
我们可以假设
News的 typedef 是 beforeList结构定义,对吧?因为正如所写,这不会编译。此外,sizeof(struct News)?没有struct News,所以无论如何都不会编译。请以可编译形式发布真实代码。 -
@WhozCraig,对不起,我编辑了错误。他们不在我的程序中。我的程序超过 200 行,并且是葡萄牙语,我要发布它吗(其他部分工作正常)?
-
@claptrap 每个PTH[i]对应一个通讯社,节点为新闻,按到达时间组织。
-
@PauloHenrique 好的,我想我现在明白了,如果以前有文本要添加新节点,您想要阅读文本并将它们设置在向量中 - 所以它是一个链表数组?否则,当您无论如何都可以获取数组中的下一个节点时,在每个节点之间建立链接似乎是多余的。
-
@claptrap 是的。然后,按顺序在屏幕上打印它们。
标签: c linked-list