我有一个链表,其元素是类型
typedef struct List * News;
struct List
{
char * Text;
News NextN;
};
在main函数中我声明了一个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
的方式或者我将节点放入列表的方式有误。
最佳答案
也许你正在寻找这样的东西:
if ( PTH[i]->Text == NULL )
{
PTH[i]->Text = msg;
}
else // first create node, then append by first finding the last node
{
News it = NULL;
News t = malloc( sizeof(struct List));
t->Text = msg;
t->NextN = NULL;
for ( it = PTH[i]->NextN; it != NULL; it = it->NextN)
{
;
}
it->NextN = t;
}
关于c - 带有指向 char 数组的指针的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19758125/