我需要在我的程序中使用链表算法。我将快速解释它需要做什么:
我的程序生成一个最大大小为 2.000 的字符串。我需要创建以下类型的元素的链接列表:
typedef struct List * News;
struct List {
char * Text;
News next;
} ;
由于结构的最大大小为 2.000,要将一个结构的信息放在我的文本字段中,我想使用结构的确切大小。所以,我做了以下函数来在我的链表顶部创建和添加一个元素:
void InsertLL (News p, char M[]){
char * text = (char *)malloc(strlen(M) * sizeof(char));
strcpy(text, M);
News s,t;
t = malloc(sizeof(struct List));
t-> Text = text;
s=p;
p=t;
t -> next = s;
}
程序无限循环运行,运行一段时间后崩溃。如果没有函数 InsertLL,它运行良好(例如,如果我不关心结构的大小并将其直接放在我的元素上)。在调试模式下,它不会崩溃,所以我认为这是我还无法解决的某种内存问题。
当我调用 malloc 时,我做错了什么吗?
谢谢你的帮助!