// 課題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 Exer15OOP { public static final int LIMIT_LOW = 0; public static final int LIMIT_HIGH = 25; public static void main(String[] args) { int temp; // 温度入力用変数 TempData15OOP pTop; // 温度データリストのトップ TempData15OOP pNew; // 温度データの新規データ // 必要であれば,ここに変数を追加 // 最初のデータは,必ず範囲内のデータであるとする Scanner scanner = new Scanner(System.in); temp = scanner.nextInt(); pTop = new TempData15OOP(temp); // 次のデータを入力 temp = scanner.nextInt(); while ((LIMIT_LOW <= temp) && (temp <= LIMIT_HIGH)) { // ここにリスト作成処理を記述 pNew = new TempData15OOP(temp); pNew.insert(pTop); pTop = pNew; temp = scanner.nextInt(); } scanner.close(); // ここに逆順に表示する処理 pTop.print(); } } class TempData15OOP { public int temp; // 温度 public TempData15OOP next; // 次のデータ public TempData15OOP(int t) { temp = t; next = null; } public void insert(TempData15OOP data) { if (next == null) { next = data; } else { next.insert(data); } } public void print() { System.out.printf("%d\n", temp); if (next != null) { next.print(); } } }