0
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
// linked-list implementation of stack
typedef struct stack node;
struct stack{
int value;
node* next;
};
void push(node*,int);
void pop(node*);
int main(){
node* head=malloc(sizeof(node));
head->next = NULL;
push(head,5);
if (head->next == NULL){
printf("head->next is NULL.");
}
pop(head);
}
void push(node* head,int value){
head->value = value;
node* temp = malloc(sizeof(node));
temp->next = head;
head = temp;
}
上記コードプリントヘッド - >次= NULLが、それべきではないので、プッシュ次いでtemp->次=頭部、次いでヘッド= TEMP呼び出されたときだから、head-> nextは前の頭の位置と同じになるはずです。このコードは頭部>次= NULL与えるが、それべきではない
あなたは頭部> next' '更新したことがありません。 'head = temp;'はローカルコピーを変更しています。あなたの最後の段落で –
論理は間違っている - 'temp->次= head'その後、'ヘッド= temp' '頭部>次の==のhead'そう。 –
あなたは値渡しという概念を理解していますか? –