fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int N[10];
  5. int P[10];
  6. int Top = -1;
  7. int num, I, cur, prv;
  8.  
  9. for (int j = 0; j < 10; j++) {
  10. N[j] = -1;
  11. P[j] = -1;
  12. }
  13.  
  14.  
  15. I = 0;
  16. while (I < 10) {
  17. printf("数値を入力してください: ¥n");
  18. scanf("%d", &num);
  19.  
  20. if (num == -1) break;
  21.  
  22. N[I] = num;
  23. prv = -1;
  24. cur = Top;
  25.  
  26. while (cur != -1 && N[cur] < N[I]) {
  27. prv = cur;
  28. cur = P[cur];
  29. }
  30.  
  31.  
  32. P[I] = cur;
  33.  
  34. if (prv >= 0) {
  35. P[prv] = I;
  36. } else {
  37. Top = I;
  38. }
  39.  
  40. I++;
  41. }
  42.  
  43.  
  44. printf("\n昇順の結果: ");
  45. int target = Top;
  46. while (target != -1) {
  47. printf("%d ", N[target]);
  48. target = P[target];
  49. }
  50. printf("\n");
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 5320KB
stdin
5 4 3 2 1 55 66 77
stdout
数値を入力してください: ¥n数値を入力してください: ¥n数値を入力してください: ¥n数値を入力してください: ¥n数値を入力してください: ¥n数値を入力してください: ¥n数値を入力してください: ¥n数値を入力してください: ¥n数値を入力してください: ¥n数値を入力してください: ¥n
昇順の結果: 1 2 3 4 5 55 66 77 77 77