0

プログラムで連結リストのアルゴリズムを使用する必要があります。何をする必要があるかを簡単に説明します。

私のプログラムは、最大サイズ 2.000 の文字列を生成します。次のタイプの要素のリンク リストを作成する必要があります。

typedef struct List * News;


 struct List { 
 char * Text; 
 News next;
} ;

構造体の最大サイズは 2.000 であるため、1 つの構造体の情報をテキスト フィールドに入力するには、構造体の正確なサイズを使用したいと考えています。そこで、次の関数を作成して、リンクされたリストの一番上に要素を作成して追加しました。

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 を呼び出すときに間違っていることはありますか?

ご協力いただきありがとうございます!

4

2 に答える 2