#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct DoublyLinkedList_Student{
int number;//学籍番号
char name[10];//苗字
struct DoublyLinkedList_Student *pointerPrevious;
struct DoublyLinkedList_Student *pointerNext;
};
int main(){
int in_number;// キーボードから入力される学籍番号を格納する変数。
struct DoublyLinkedList_Student *pointer_root;
pointer_root = (struct DoublyLinkedList_Student *)malloc( sizeof(struct DoublyLinkedList_Student) );
printf("今からデータを自動的に登録して、リスト構造を作成します。\n");
struct DoublyLinkedList_Student *pointer_student;
struct DoublyLinkedList_Student *pointer_previous_student;
pointer_student = pointer_root;
printf(" %d 番目の学生の学籍番号と氏名を登録します。\n", 1);
pointer_student->number = 175;
strcpy(pointer_student->name, "tanaka");
printf(" %d 番目の学生の学籍番号と氏名を登録します。\n", 2);
pointer_student->pointerNext = (struct DoublyLinkedList_Student *)malloc( sizeof(struct DoublyLinkedList_Student) );
pointer_previous_student = pointer_student;
pointer_student = pointer_student->pointerNext;
pointer_student->pointerPrevious = pointer_previous_student;
pointer_student->number = 176;
strcpy(pointer_student->name, "yamada");
printf(" %d 番目の学生の学籍番号と氏名を登録します。\n", 3);
pointer_student->pointerNext = (struct DoublyLinkedList_Student *)malloc( sizeof(struct DoublyLinkedList_Student) );
pointer_previous_student = pointer_student;
pointer_student = pointer_student->pointerNext;
pointer_student->pointerPrevious = pointer_previous_student;
pointer_student->number = 177;
strcpy(pointer_student->name, "nakamura");
printf(" %d 番目の学生の学籍番号と氏名を登録します。\n", 4);
pointer_student->pointerNext = (struct DoublyLinkedList_Student *)malloc( sizeof(struct DoublyLinkedList_Student) );
pointer_previous_student = pointer_student;
pointer_student = pointer_student->pointerNext;
pointer_student->pointerPrevious = pointer_previous_student;
pointer_student->number = 178;
strcpy(pointer_student->name, "aoki");
printf(" %d 番目の学生の学籍番号と氏名を登録します。\n", 5);
pointer_student->pointerNext = (struct DoublyLinkedList_Student *)malloc( sizeof(struct DoublyLinkedList_Student) );
pointer_previous_student = pointer_student;
pointer_student = pointer_student->pointerNext;
pointer_student->pointerPrevious = pointer_previous_student;
pointer_student->number = 179;
strcpy(pointer_student->name, "katoh");
printf(" %d 番目の学生の学籍番号と氏名を登録します。\n", 6);
pointer_student->pointerNext = (struct DoublyLinkedList_Student *)malloc( sizeof(struct DoublyLinkedList_Student) );
pointer_previous_student = pointer_student;
pointer_student = pointer_student->pointerNext;
pointer_student->pointerPrevious = pointer_previous_student;
pointer_student->number = 180;
strcpy(pointer_student->name, "suzuki");
pointer_student->pointerNext = NULL;
printf("\n");
printf("名簿に登録された学生のリストを表示します。\n");
pointer_student = pointer_root;
while(1){
printf( "%d %s \n", pointer_student->number , pointer_student->name );
pointer_student = pointer_student->pointerNext;
if( pointer_student == NULL ){ break; }
}
printf("\n");
printf("学籍番号を入力してください。その番号の学生の苗字を表示します。");
scanf( "%d", &in_number );
pointer_student = pointer_root;
if( pointer_student->number == in_number ){
printf("学籍番号 %d の学生の苗字は %s です。\n", pointer_student->number, pointer_student->name );
}
else{
while(1){
pointer_student = pointer_student->pointerNext;
if( pointer_student->number == in_number ){
printf("学籍番号 %d の学生の苗字は %s です。\n", pointer_student->number, pointer_student->name );
break;
}
}
}
return 0;
}