我需要制作一个(最多)有 50 个链表的程序。基本上,我的程序会生成一些消息,并且基于字符串前面的指示符,我需要将消息放在正确的链表中。
我不知道它是否足够清楚,但我会尝试展示我的部分代码(重要部分)。我为链表添加一个新元素(在顶部)的函数如下:
void InsertLL (News p, char M[]) {
char * text = malloc(strlen(M)+1);
strcpy(text, M);
News s,t;
t = malloc(sizeof(struct List));
t-> Text = text;
s = p;
p = t;
p-> next = s;
}
我的结构列表(我的列表元素的类型)包含一个字符指针(称为文本)和一个指向列表下一个元素的指针。
模拟我的程序,假设我收到一条消息,需要将其放入指针 p[0] 指向的链表中。所以我创建了一个新元素(忘记列表为空的情况,我已经做了这个)并使用我展示的函数添加到我的列表顶部。现在,假设我收到了另一个需要放入下一个指针 p[1] 的消息。如果我打印 p[0] -> Text,我会得到 p[1]->Text 的文本。
我的意思是,如果我在 p[i] 指向的列表中添加一个新元素,那么之前的所有texts p[i] -> Texts
元素都会获得这个新元素的新文本。我不知道我做错了什么。
我不知道这是否足以帮助我,如果需要更多信息,请告诉我。