基本情報技術者試験的な備忘録(アルゴリズム 単方向リストの問題)

20230430基本情報技術者試験的な備忘録(アルゴリズム 単方向リストの問題)
 
アルゴリズム素人です。
以下違いだらけです。
 
科目Bのサンプル問題に単方向リストが二つ載っている。(6問セットと20問セットの両方に各1題)
 
 
***********************************************************************
サンプル問題 科目B(20問セットの問10抜粋)穴埋め問題の回答部分も記載しています。
 
<プログラム1>
 
大域:ListElement:ListHead
 
〇delNode(整数型:pos)
ListElement:prev
整数型:i
if(posが1と等しい)
ListHead ← ListHead.next
else
prev ← ListHead
/* posが2と等しいときは繰返し処理を実行しない*/
for(i 2を2からpos-1 まで1ずつ増やす)
prev ← prev.next
endfor
prev.next ← prev.next.next
endif
 
*****************************************************************
サンプル問題 科目B(6問セットの問3抜粋)穴埋め問題の回答部分も記載しています。
 
<プログラム2>
 
大域:ListElement:ListHead
 
〇append(文字型:qVal)
ListElement:prev,curr
curr ← ListElement(qVal)
if(ListHeadが未定義の場合)
ListHead ← curr
else
prev ← ListHead
while(prev.nextが未定義でない)
prev.next ← prev.next
endwhile
prev.next ← curr
endif
 
************************************************************
 
上記のようなのがある。
1は削除するプログラム
2は最後に追加するプログラム
となると、途中に追加「挿入」するプログラムも知りたい。
でも過去問では見つからなかった。
 
アルゴリズムの理屈から行くと、追加する手前のnextに新しい要素、新しい要素に元のnextをコピーする感じかと。
 
下記の図の黄色をすればいいのかも。

時間がないので、プログラムにできない(能力不足)が、以前、pythonで、サンプル問題 科目B(6問セットの問3抜粋)を作った。
(ブログに載っているが、忘れていた。)
def メソッド(insert)とかとして作ればいいのだろう・・・・・・・・・・・・。
 
 
今回少し思ったのが、「オブジェクト指向」について。
今まで、オブジェクト指向って、何のために必要なの?と思っていたが、データ構造の「リスト」など、
(もともとのデータがエクセルのような表とか、配列になっていない場合)、
オブジェクト指向のプロパティ(nextとか?)とかを使えば、扱いやすいのかなと思った。
(というか、リストをnextとかたどることができなければ使えないかも・・・。)
 
素人ですみません。
 
その他、関係ないが、簡単なアルゴリズムを間違えるので、ITパスポートとか、基本情報の午前問題の過去問を解いてみようと思う。