所以,我試圖在雙向鏈表中進行操作,並嘗試應用刪除邏輯,但它顯示出某種無效錯誤。請告訴我這段代碼有什麼問題。 錯誤消息與代碼行一起寫入。雙鏈表錯誤
函數來獲得新的節點:
void getnewnode(int x)
{
struct node* temp = (struct node*)malloc(sizeof(struct node*));
temp->data = x;
temp->next = NULL;
temp->prev = NULL;
}
插入功能:
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;
}
}
刪除(第n個節點)功能:
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);
}
請縮進您的代碼,以使其可讀。 –
請發佈確切的錯誤信息。 –
函數:'getnewnode()'似乎是調試問題的關鍵。和'delete()'沒有任何關係,所以爲什麼要發佈它?請發佈代碼:'getnewnode()'; – user3629249