誰か助けてください。宿題で困っています。
この宿題はとても簡単です。list(1,2,3) を作成し、 function を作成して中間の番号を削除します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));
}