二重リンクリストで操作しようとしていますが、削除のロジックを適用しようとしましたが、何らかの無効なエラーが表示されています。このコードで何が間違っているのか教えてください。 エラーメッセージはコード行の横に記載されています。新しいノードを取得する二重リンクリストエラー
機能:
void getnewnode(int x)
{
struct node* temp = (struct node*)malloc(sizeof(struct node*));
temp->data = x;
temp->next = NULL;
temp->prev = NULL;
}
挿入機能:(n番目のノード)機能
void insertatbeg(int x)
{
struct node* newnode=getnewnode(x); /* void value not ignored as it ought to be. */
if(head==NULL)
{
head = newnode;
}
else
{
head->prev = newnode;
newnode->next = head;
head = newnode;
}
}
の削除:
:ここvoid delete(int n)
{
struct node* temp1=head;
int i;
if(temp1 == NULL)
return;
for(i = 0; i < n-2; i++)
{
temp1 = temp1->next;
}
struct node* temp2 = temp1->next;
(temp2->next)->prev = temp1;
temp1->next = temp2->next;
free(temp2);
}
が主な機能であります
struct node /* List called node */
{
struct node* next;
int data;
struct node* prev;
};
struct node* head;
void insertatbeg(int x);
void delete(int n);
int main()
{
int x;
head = NULL;
insertatbeg(x);
insertatbeg(x);
insertatbeg(x);
delete(2);
}
具体的に
void getnewnode(int x)
{
struct node* temp = (struct node*)malloc(sizeof(struct node*));
temp->data = x;
temp->next = NULL;
temp->prev = NULL;
}
、最初の行に:
コードをインデントして読み取り可能にしてください。 –
正確なエラーメッセージを投稿してください。 –
関数: 'getnewnode()'は問題をデバッグするのに重要であるようです。 'delete()'は問題とは関係がないので、なぜ投稿するのですか?以下のコードを投稿してください: 'getnewnode()'; – user3629249