請我需要幫助。我的家庭作業有問題。鏈接列表刪除正在刪除錯誤的節點
這個作業很簡單。創建一個列表(1,2,3)並通過創建一個函數delnode
刪除中間的數字。但它必須使用功能free()
。
現在,我使用鏈表方法創建了列表(1,2,3)
。我想刪除數字2,但它不起作用。它應該與(1,3)
一起出來,但它與(2,3)
一起出來。
#include <stdio.h>
#include <stdlib.h>
struct node{
int number;
struct node* next;
};
typedef struct node node;
//prototype function
node* allocateMemory(void);
node* insertNode(node*);
void delnode(node*);
int main(){
int i,num;
node* entr = allocateMemory();
node* p = NULL;
entr->number = 1;
entr->next = NULL;
num = 3;
for(i=1;i<num;i++){
if(!p){
p=insertNode(entr);
}else{
p=insertNode(p);
}
p->number = i+1;
}
while(entr){
if(entr->number == 2){
entr->number == NULL;
break;
}
entr=entr->next;
}
while(entr){
printf("%d\n",entr->number);
entr=entr->next;
}
return 0;
}
node* insertNode(node* current){
node* newNode = allocateMemory();
current->next = newNode;
newNode->next = NULL;
return newNode;
}
void delnode(node* current){
node* temp = allocateMemory();
temp = current->next->next;
free(current->next);
current = temp;
free(temp);
return ;
}
node* allocateMemory(void){
return (node*)malloc(sizeof(node));
}
你試圖實現一個鏈表。 – Aesthete
告訴我們你真正想要完成的事情,然後我們可以嘗試找到正確的方法。 – 0x90
感謝你們的評論,我已經編輯過它。 ^^ – edisonthk