2つの整数で構成されるノードでリンクリストを作成するプログラムを作成しようとしています。それはノードの数を求めます。Cでリンクリストを作成しようとしましたが、要求されたノードの半分しか作成されていません。
偶数のノードを入力すると、プログラムはその半分しか作成しませんが、奇数を入力するとノードの半分の後でクラッシュします。ここで
は私のコードです:
#include <stdio.h>
#include <stdlib.h>
struct node{
int student;
int exam;
struct node *link;
};
int main(void){
int student_num, exam_num, node_num, i;
struct node *start;
struct node *next;
struct node *temp;
printf("How many nodes?: ");
scanf("%d",&node_num);
temp = malloc(sizeof(struct node));
start = temp;
start->link = NULL;
next = start;
//Creates node_num nodes
for(i=1;i<=node_num;i++){
temp = malloc(sizeof(struct node));
next->link=temp;
next=temp;
next->link=NULL;
}
next=start->link;
//Fills in the numbers
for(temp=start;temp->link!=NULL;temp=next->link){
printf("\nStudent number: ");
scanf("%d",&student_num);
temp->student=student_num;
printf("Exam number: ");
scanf("%d",&exam_num);
temp->exam=exam_num;
next=temp->link;
}
next=start->link;
//Shows the result
for(temp=start;temp->link!=NULL;temp=next->link){
printf("\nStudent number: %d\tExam number: %d\n",temp->student,temp->exam);
next=temp->link;
}
}
デバッガでコードをステップ実行し、変数が間違っているかどうかを確認します。 – Barmar