回答編集履歴

3

さらに簡単化

2020/08/03 01:23

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -129,3 +129,9 @@
129
129
  }
130
130
 
131
131
  ```
132
+
133
+ **追記4**
134
+
135
+ さらに簡単にできます。
136
+
137
+ `if (p != low) {` と`}` は無くても大丈夫です。

2

コードの簡単化

2020/08/03 01:23

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -101,3 +101,31 @@
101
101
  + }
102
102
 
103
103
  ```
104
+
105
+ **追記2**
106
+
107
+ もう少し簡単になりました。
108
+
109
+ ```C
110
+
111
+ /* ここからソート(未完成) */
112
+
113
+ if (p != low) {
114
+
115
+ tmp = low->prev;
116
+
117
+ if (tmp == p) tmp = low;
118
+
119
+ delete_cell_from_list(low);
120
+
121
+ insert_cell_to_list(low, p);
122
+
123
+ delete_cell_from_list(p);
124
+
125
+ insert_cell_to_list(p, tmp);
126
+
127
+ p = low;
128
+
129
+ }
130
+
131
+ ```

1

コードの改善

2020/08/02 18:21

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -59,3 +59,45 @@
59
59
  }
60
60
 
61
61
  ```
62
+
63
+ **追記**
64
+
65
+ for文はそのままで、「ここからソート(未完成)」の部分だけの変更でできます。
66
+
67
+ ```diff
68
+
69
+ /* ここからソート(未完成) */
70
+
71
+ - tmp = delete_cell_from_list(low);
72
+
73
+ - insert_cell_to_list(tmp, p);
74
+
75
+ - tmp = delete_cell_from_list(p);
76
+
77
+ - insert_cell_to_list(tmp, low->prev);
78
+
79
+ - p = p->next;
80
+
81
+ + if (p != low) {
82
+
83
+ + NODE *prev = low->prev;
84
+
85
+ + tmp = delete_cell_from_list(low);
86
+
87
+ + insert_cell_to_list(tmp, p);
88
+
89
+ + tmp = delete_cell_from_list(p);
90
+
91
+ + if (p == prev)
92
+
93
+ + insert_cell_to_list(tmp, low);
94
+
95
+ + else
96
+
97
+ + insert_cell_to_list(tmp, prev);
98
+
99
+ + p = low;
100
+
101
+ + }
102
+
103
+ ```