リスト処理でサンプルコードに用途不明なコードがある
リスト処理で下のプログラムのコメント部分の「//最後のデータを探す」というコードの意味がわかりませんprintfでどこで使われてるか検証しましたがわかりません。 そもそも意味があるコードなのかもわかりません、自分的には意味ないコードだと思ってますがどうなのか知りたいです
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "stdlib.h"
#define NAMELEN 16
struct list {
char name[NAMELEN];
int price;
struct list *next;
};
struct list *start = NULL;
int main() {
struct list *p = NULL, *dt, *t;
int n;
char name[NAMELEN] = { '\0' };
do {
do {
printf("データの追加・削除[Add...0 / Delete... 9]:");
scanf_s("%d", &n);
if (n != 0 && n != 9) {
printf("0もしくは9を入力してください\n");
}
} while (n != 0 && n != 9);
/*追加*/
if (n == 0) {
dt = (struct list *)malloc(sizeof(struct list));
dt->next = NULL;
printf("名前:"); scanf_s("%s",dt->name,NAMELEN);
printf("値段:"); scanf_s("%d", &dt->price);
if (start == NULL) {
start = dt;
p = dt;
}
else {
p->next = dt;
p = dt;
}
}
/*削除*/
if (n == 9) {
if (start == NULL) {
printf("データがありません\n");
}
else {
p = NULL;/*dtの一つ前のデータのポインタを入れる*/
printf("名前:"); scanf_s("%s",name,NAMELEN);
dt = start;
do {
if (strcmp(name, dt->name) == 0) {//同じ
if (p == NULL) {//先頭のデータと同じだった時の削除
printf("p\n");//確認
start = dt->next;
}
else {
p->next = dt->next;
free(dt);
dt = NULL;
}
break;
}
else {
p = dt;
dt = dt->next;
}
} while (dt != NULL);
//最後のデータを探す
p = start;
if (p == NULL) {
}
else {
do {
if (p->next != NULL) {
printf("最後のデータを探す\n");
p = p->next;
}
else {
break;
}
} while (p != NULL);
}
}
}
/*表示*/
t = start;
if (t != NULL) {
n = 1;
do {
printf("No.%d: 名前 %s 値段 %d\n", n, t->name, t->price);
t = t->next;
n++;
} while (t != NULL);
}
else {
printf("データはありません");
}
do {
printf("もう一度? [YES・・・0 / NO・・・9]:");
scanf_s("%d",&n);
if (n != 0 && n != 9) {
printf("0もしくは9を入力してください\n");
}
} while (n != 0 && n != 9);
} while (n != 9);
_getch();
return 0;
}