c - 带有指向 char 数组的指针的链表

标签 c linked-list

我有一个链表,其元素是类型

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/

相关文章:

c - 在 C 中从 char* 数组末尾取出内容

c - 我应该使用哪种类型的函数?

java - java从链表中删除多个节点

循环双向链表结束函数

C指针错误值?

c - 用txt文件填充循环双链表

c - 在 C 中,当在 if 语句的条件中使用它们时,哪些值等于 true 或 false?

c - 变量 'head' 未经初始化链表 c 使用

java - 使用java在特定位置插入节点

c - scanf 无法检测到 EOF 但 getchar 能够检测到 EOF 输入?