// 課題15 単方向リスト 逆順 /* #include #include #include #define LIMIT_LOW 0 #define LIMIT_HIGH 25 // 構造体の定義 typedef struct tag { int temp; // 温度 struct tag *next; // 自分自身の型へのポインタ変数 } TempData15; // 温度データ // 新データ作成関数 TempData15* makeNewNode(int t) { TempData15* pNewNode; //** person 型のメモリ領域確保 ** pNewNode = (TempData15*)malloc(sizeof(TempData15)); if (pNewNode != NULL) { //** データ設定 ** pNewNode->temp= t; pNewNode->next = NULL; } return pNewNode ; } int main(void) { int temp; // 温度入力用変数 TempData15 *pTop; // 温度データリストのトップ TempData15 *pNow; // 温度データリスト内の現在位置 TempData15 *pNew; // 温度データの新規データ // 必要であれば,ここに変数を追加 // 最初のデータは,必ず範囲内のデータであるとする scanf("%d", &temp); pTop = makeNewNode(temp); pNow = pTop; // 次のデータを入力 scanf("%d", &temp); while ( (LIMIT_LOW <= temp) && (temp <= LIMIT_HIGH)) { // ここにリスト作成処理を記述 pNew = makeNewNode(temp); pNew->next = pTop; pTop = pNew; // 次のデータを入力 scanf("%d", &temp); } // ここに逆順に表示する処理 pNow = pTop; while (pNow != NULL) { printf("%d\n", pNow->temp); pNow = pNow->next; } return 0 ; } */ import java.util.Scanner; public class Exer15 { public static final int LIMIT_LOW = 0; public static final int LIMIT_HIGH = 25; public static void main(String[] args) { int temp; // 温度入力用変数 TempData15 pTop; // 温度データリストのトップ TempData15 pNow; // 温度データリスト内の現在位置 TempData15 pNew; // 温度データの新規データ // 必要であれば,ここに変数を追加 // 最初のデータは,必ず範囲内のデータであるとする Scanner scanner = new Scanner(System.in); temp = scanner.nextInt(); pTop = new TempData15(temp); pNow = pTop; // 次のデータを入力 temp = scanner.nextInt(); while ((LIMIT_LOW <= temp) && (temp <= LIMIT_HIGH)) { // ここにリスト作成処理を記述 pNew = new TempData15(temp); pNew.next = pTop; pTop = pNew; // 次のデータを入力 temp = scanner.nextInt(); } scanner.close(); // ここに逆順に表示する処理 pNow = pTop; while (pNow != null) { System.out.printf("%d\n", pNow.temp); pNow = pNow.next; } } } class TempData15 { public int temp; // 温度 public TempData15 next; // 次のデータ public TempData15(int t) { temp = t; next = null; } }