【アセンブラ言語】連結リストのポインタについて解説

プログラミング

連結リスト部分のポインタって?

まず連結リストの1要素は以下の2要素で構成される。

 

 

上でいうデータ部分は値が格納され、ポインタ部分は次のレコードの先頭アドレスが記録されます。

この1要素をC言語で定義してみましょう。

こんな感じでかけます。

 

 

dataがデータ部分、nextがポインタ部分を定義しています。

 

malloc関数を使って次の先頭アドレスを取得する

次はmalloc関数を使って要素の先頭アドレスを取得します。

C言語で表記するとこんな感じ

 

 

new_rには先ほど定義した1要素のアドレスが格納されています。

malloc関数の説明はここではしません。

 

 

連結リスト先頭への要素の追加

既存にある連結リストの先頭に要素を追加してみよう。

 

 

流れとしては追加する要素の作成→データDの代入→ポインタの付け替え です。

 

これをC言語で表記するとこんな感じ。

 

 

 

連結リスト構造の利点

連結リスト構造の利点として、要素(レコード)の挿入・削除が一定の時間で可能である点があげられる。

 

 

リスト途中への要素挿入

流れとしては

追加する要素の作成→データDの代入→ポインタの付け替え です。

 

 

C言語で表記するとこんな感じ

 

 

リスト途中からの要素の削除

流れとしてはデータの移し変え→ポインタの付け替え

 

以下のPを削除することを考える。

C言語で書くとこんな感じになる。

 

 

これによってpのデータはyのデータになり、かつ次に指すポインタがyの次のポインタに写り変わる。まとめると、yのデータがxに移行し、xの次に移動する場所がyの次の要素となった。このようにしてリスト途中からのレコード削除を行う。

勉強する上で買っておきたいアイテム

CASLIIとプログラミング入門

かなり古い本ですが、正しいアセンブラ言語の知識が得られるのでおすすめです。アセンブラ言語はプログラミング言語の根源ですのでここをしっかり理解していることはソフトウエアエンジニアにおいてかなり強みになると思います。

座椅子のカスタマイズ

「姿勢安定」+「腰への負担改善」が見込め長時間快適に勉強に打ち込むことができます。研究室や自宅の作業机に設置することをオススメします。

タイトルとURLをコピーしました