C#Note | Visual Studio | MSDN | MSDN ライブラリ | VSUG |

目 次

101: Stackとは?
102: Stackオブジェクトの先頭に,引数に指定したオブジェクトを追加するには?
103: Stackオブジェクトの先頭にあるオブジェクトを返し,そのオブジェクトをStackオブジェクト内から削除するには?
104: Stackオブジェクトの先頭にあるオブジェクトを返し,そのオブジェクトをStackオブジェクト内から削除しないようにするには?
105: 引数に指定したオブジェクトが,Stackオブジェクト内に存在するかどうかを調べるには?
106:
107:
108:
109:
110:
101: Stackとは?(後入れ先出し型の配列)
 Stack<(Of <(T>)>) は、配列として実装されます。

Stack<(Of <(T>)>) の容量は、Stack<(Of <(T>)>) が保持できる要素数になります。Stack<(Of <(T>)>) に要素を追加すると、必要に応じて、内部の配列の再割り当てによって容量が自動的に増加します。容量を減らすには、TrimExcess を呼び出します。

Count がスタックの容量よりも小さい場合、Push は O(1) 操作になります。新しい要素を格納するために容量を増やす必要がある場合、Push は O(n) 操作になります。ここで、n は Count です。Pop は O(1) 操作です。

Stack<(Of <(T>)>) は、nullNothingnullptrnull オブジェクト参照 (Visual Basic では Nothing) を参照型に対して有効な値として受け取り、要素の重複を許可します。
102: Stackオブジェクトの先頭に,引数に指定したオブジェクトを追加するには?
private void button_Stack_追加_Click(object sender, EventArgs e) {
    Stack<string> _Stack = new Stack<string>();
    //オブジェクトを追加する
    _Stack.Push("1.山田");
    _Stack.Push("2.安部");
    _Stack.Push("3.熊谷");
    //内容の確認
    Console.WriteLine("-------------------------------------------");
    foreach (string _s in _Stack) {
        Console.WriteLine(_s);
    }
}

-------------------------------------------
3.熊谷
2.安部
1.山田
103: Stackオブジェクトの先頭にあるオブジェクトを返し,そのオブジェクトをStackオブジェクト内から削除するには?'
private void button_Pop_Click(object sender, EventArgs e) {
    Stack<string> _Stack = new Stack<string>();
    //オブジェクトを追加する
    _Stack.Push("1.山田");
    _Stack.Push("2.安部");
    _Stack.Push("3.熊谷");
 
    //内容の確認
    Console.WriteLine("-------------------------------------------");
    foreach (string _s in _Stack) {
        Console.WriteLine("Pop前:{0}", _s);
    }
 
    string _st = _Stack.Pop();
    Console.WriteLine("-------------------------------------------");
    Console.WriteLine("Pop:{0}", _st);
 
    //内容の確認
    Console.WriteLine("-------------------------------------------");
    foreach (string _s in _Stack) {
        Console.WriteLine("Pop後:{0}", _s);
    }
}

-------------------------------------------
Pop前:3.熊谷
Pop前:2.安部
Pop前:1.山田
-------------------------------------------
Pop:3.熊谷
-------------------------------------------
Pop後:2.安部
Pop後:1.山田
104: Stackオブジェクトの先頭にあるオブジェクトを返し,そのオブジェクトをStackオブジェクト内から削除しないようにするには?'
private void button_Stack_Peek_Click(object sender, EventArgs e) {
    Stack<string> _Stack = new Stack<string>();
    //オブジェクトを追加する
    _Stack.Push("1.山田");
    _Stack.Push("2.安部");
    _Stack.Push("3.熊谷");
 
    //内容の確認
    Console.WriteLine("-------------------------------------------");
    foreach (string _s in _Stack) {
        Console.WriteLine("Peek前:{0}", _s);
    }
 
    string _st = _Stack.Peek();
    Console.WriteLine("-------------------------------------------");
    Console.WriteLine("Peek:{0}", _st);
 
    //内容の確認
    Console.WriteLine("-------------------------------------------");
    foreach (string _s in _Stack) {
        Console.WriteLine("Peek後:{0}", _s);
    }
}

-------------------------------------------
Peek前:3.熊谷
Peek前:2.安部
Peek前:1.山田
-------------------------------------------
Peek:3.熊谷
-------------------------------------------
Peek後:3.熊谷
Peek後:2.安部
Peek後:1.山田
105: 引数に指定したオブジェクトが,Stackオブジェクト内に存在するかどうかを調べるには?
private void button3_Click(object sender, EventArgs e) {
    Stack<string> _Stack = new Stack<string>();
    //オブジェクトを追加する
    _Stack.Push("1.山田");
    _Stack.Push("2.安部");
    _Stack.Push("3.熊谷");
 
    if (_Stack.Contains("2.安部")) {
        Console.WriteLine("Contains:{0}", "「2.安部」は存在する");
    }
}

Contains:「2.安部」は存在する
 
106:
107:
108:
109:
110:
 
この Web サイトに関する感想などについては、takamorimail@yahoo.co.jpまで電子メールでお送りください。ただし、技術的な質問にはお答えできません。
Copyright (C) 2008 Takamori