編集1:英語に翻訳するのを忘れました。今修正されました。 編集2:HEADERインスタンス。ヘッダを重複してリンクされたリストに要素を挿入しようとすると、「セグメンテーションフォールト」が発生するのはなぜですか? C言語
私は二重リンクリストに関する研究を開始しています。リストの最初または最後にアイテムを挿入する際に問題が発生しています。
重要:ヘッダーを使用しています。通常のインサートはすでにマスターされているので、これを行うことが重要です。
ありがとうございます!
void beginning_insert(ELEMENT *list, HEADER *l, int value)
{
ELEMENT * p = malloc(sizeof(ELEMENT));
p -> info = value;
p -> next = l -> head;
p -> previous = NULL;
l -> head = p;
if(l -> tail == NULL)
{
l -> tail = l -> head;
}
else
{
(((l -> head) -> next) -> previous) = p;
}
l -> number_of_nodes++;
list = p;
}
機能を最後に挿入するために:使用
ELEMENT * end_insert(HEADER *l, int value)
{
ELEMENT * new = malloc(sizeof(ELEMENT));
new -> info = valor;
new -> next = NULL;
new -> previous = l -> tail;
if(l-> head == NULL)
{
l -> head = new;
}
else
{
l -> tail -> next = new;
}
l -> tail = new;
l -> number_of_nodes++;
return new;
}
構造体:
typedef struct element
{
int info;
struct element * next;//control
struct element * previous;//control
} ELEMENT;
typedef struct header //control
{
ELEMENT * head;
int number_of_nodes;
ELEMENT * tail;
} HEADER;
//Header instance
HEADER * start_header()
{
HEADER *l;
l = malloc(sizeof(HEADER));
l -> number_of_nodes = 0;
l -> head = NULL;
l -> tail = NULL;
return l;
}
ステップを... –
はHEADERインスタンスが初期化された方法を、私たちを表示します。 –
ヘッダーで 'head'と' tail'をNULLに初期化しましたか? – paddy