回答編集履歴

2

コードコメント修正

2022/11/15 17:12

投稿

jimbe
jimbe

スコア12543

test CHANGED
@@ -12,7 +12,7 @@
12
12
  struct node* next;
13
13
  } NODE;
14
14
 
15
- // p の後ろに追加し, 追加したノードを返す
15
+ // node の後ろに追加し, 追加したノードを返す
16
16
  struct node *insert(NODE *node, elementtype e) {
17
17
  NODE *new = malloc(sizeof(NODE));
18
18
  new->element = e;

1

追記

2022/11/15 10:13

投稿

jimbe
jimbe

スコア12543

test CHANGED
@@ -1,7 +1,7 @@
1
1
  オリジナルは入力時にリストを作りながら別途最大値の位置を求めていますが、「片方向循環リストの生成」と「最大値のノードの検索」を分けたほうが良いかもしれません。
2
2
 
3
3
  片方向循環リストは、先頭もしくは最後を示すポインタのみで生成・管理出来ます。以下のコードでは ( 入力順にリストを生成する必要があるので ) insert を"リストの最後に追加する"関数としています。
4
- 最後の入力のノードの次 (next) は最初の入力のノードですので、検索はそのノードから始めるものとし、見つかった最大値のノードから表示を行います。
4
+ 最後の入力のノードの次 (next) は最初の入力のノードですので、検索はそのノードから始めるものとし、見つかった最大値のノードから表示を行います。( "n 番目"という指定(パラメータ)では起点となるノードが別に必要ですが、直接ノードを指定すれば必要ありません。)
5
5
  ```c
6
6
  #include<stdio.h>
7
7
  #include<stdlib.h>