今日はリンクリストを学び、このコードを試しました。 forループを使用して5つの入力値をリストに追加したかったのです。 forループの最後に、 "head = head-> next" は、リスト内の次のノードにヘッドポインタを進め、ループが終了すると、リストの最後のノードに.nextフィールドがNULLに設定されますリストの最後とwhileループを使用してリストを出力します。しかし、コードをコンパイルして実行すると、リストの出力値は同じではありません!を入力値とする。私はここでどこが間違っていますか?出力がノード内のすべてのデータ要素と等しくなるようにコードを変更するにはどうすればよいですか?
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
int key;
struct node* next;
};
struct node* head=NULL;
int main(){
int i;
int a;
int b;
head=(struct node*)malloc(sizeof(struct node));//allocated memory
for(i=0;i<5;i++){
scanf("%d %d",&a,&b);
head->data=a;
head->key=b;
head->next=(struct node*)malloc(sizeof(struct node));
head=head->next;
}
head->next=NULL;
int j;
struct node* m;
m=head;
while(m!=NULL){
printf("%d %d ",m->data,m->key);
m=m->next;
}
}
挿入プロセスに問題があります。 –
Youiは頭にポインタを置き、テールを伸ばさなければなりません。あなたがしているのは、挿入した最後の有効な要素へのポインタを保持することです。 – Croolman
ありがとうございます。しかし、私は正しい出力を得るために何をする必要があるのか混乱していますか? – Tanzim