Machineboy空

片方向リスト(かたほうこう) 본문

언어/C#

片方向リスト(かたほうこう)

안녕도라 2025. 5. 22. 13:25

方方向リストの定義

以下の操作をおこなえるデータ構造です

リストの先頭、末尾(まつび)に要素を追加・削除(さくじょ)する   O(1)
リストの特定の位置に定数個の要素を追加・削除する  개수가 고정(3개 추가 등)
O(N)
リストの特定の位置にK個の要素を追加・削除する 개수가 입력에 따라 달라짐(개수의  절반 등) O(N+K)
リストの特定の位置の要素を参照する   O(N)

方方向リストの作成

value 要素を保持する配列 先頭と、末尾の要素の値 = -1で初期化
next_ptr 次のノードのインデックスを保持する配列 先頭の要素の値=1023, 末尾の要素の値= -1で初期化
back 末尾の1つ前の要素のインデックスを保持する変数 0で初期化
empty_min_idx valueに要素が入っていない最も小さいインデックスを保持する変数 1で初期化

ソースコード

using System;

class Program
{
    static void Main()
    {
        int n = int.Parse(Console.ReadLine());
        
        int[] value = new int[1024];
        int[] next_ptr = new int[1024]; 
        
        int empty_min_idx = 1;
        int back = 0;
        
        const int start_ptr = 0;
        const int end_ptr = 1023;
        
        value[start_ptr] = -1;
        value[end_ptr] = -1;
        
        next_ptr[start_ptr] = end_ptr;
        next_ptr[end_ptr] = -1;
        
        for(int i = 0; i < n; i++){
            int a = int.Parse(Console.ReadLine());
            value[i] = a;
        }
        
        
        for(int i = 0; i < n; i++){
            Console.WriteLine(value[i]);
        }
    }
}