リンクリスト

1291 ワード

array = ['철수', '영희', '민수']
arrayは順番のある資料の集合です.
array[0] == '철수'
array[1] == '영희'
array[2] == '민수'
言い換えれば、1番目の学生はチョルス、2番目の学生はヨンヒ、3番目の学生はミンスだ.
このように解釈できる.
このように資料の構造を特定することは,データへのアクセスが容易であるという利点がある.順序とデータは互いにバンドルされているので,順序といえばデータを直接知ることができる.しかし、このような構造には、中間で資料を追加または削除するという欠点もある.上の既存の配列で2番目のデータ「夏栄」を使用したい場合、1番目のデータは「元に戻す」が、2番目のデータは「夏栄」となり、その後のすべてのデータは自分の順番で1つずつ遅延するため、計算機にとって演算量は必然的に増加する.

LinkedListはこれらの欠点を補うために現れた.データの順序を決めるのではなく、まず哲秀がいて、哲秀の後に英姫がいて、英姫の後に民秀がいて、このようにデータは自分の位置を自分の前のデータとの関係と定義します.途中に「夏栄」を付けて、「夏栄の次の英姫」を1つだけ修正すれば、後で修正する必要はありません.「リンクリストの欠点は逆で、資料へのアクセスが不便です.」「何番目のデータ」という概念がないので、前のデータから始めて、乗り続けます.
整理すると、一般的なリスト(array)は資料にアクセスしやすいが、中間資料を修正する必要がある.リンクリストは逆に,中間資料の修正は容易であるが,近づきにくい.あるデータをブラウズする場合,配列はO(1)の時間的複雑度を有し,リンクリストは前から逐一チェックされるため,O(n)の時間的複雑度を有する.ただし、最後のデータから順に削除すると、リストがより効率的になります.
リンクリストのもう一つの制限は、ノードとnextの接続のみで構成され、一方向データであり、prevを追加することでDoubly linklistを作成することも、最後のデータのnextを初期データとして定義することで循環linklistを作成することもできます.
学習の方向:
  • リンクリストクラスを複数回直接実装しましょう.
  • の一般リストとの違いからその本質がうかがえるので、この点を考えて問題を解決しましょう.
  • デュアルリンクリスト、ループリンクリストを実現します.