Добавить в цитаты Настройки чтения

Страница 89 из 502

<b>  int tos;    // индекс вершины стека</b>

<b>  // Построить пустой класс Stack для реализации стека заданного размера, </b>

<b>  public Stack(int size) {</b>

<b>    stck = new char[size]; // распределить память для стека </b>

<b>    tos = 0;</b>

<b>  }</b>

<b>  // Поместить символы в стек, </b>

<b>  public void Push(char ch) { </b>

<b>    if(tos==stck.Length) {</b>

<b>      Console.WriteLine(&quot; - Стек заполнен.&quot;); </b>

<b>      return;</b>

<b>    }</b>

<b>    stck[tos] = ch; </b>

<b>    tos++;</b>

<b>  }</b>

<b>  // Извлечь символ из стека, </b>

<b>  public char Pop() {</b>

<b>    if(tos==0) {</b>

<b>      Console.WriteLine(&quot; - Стек пуст.&quot;); </b>

<b>      return (char) 0;</b>

<b>    }</b>

<b>    tos-- ;</b>

<b>    return stck[tos];</b>

<b>  }</b>

<b>  // Возвратить значение true, если стек заполнен, </b>

<b>  public bool IsFull() { </b>

<b>    return tos==stck.Length;</b>

<b>  }</b>

<b>  // Возвратить значение true, если стек пуст, </b>

<b>  public bool IsEmpty() { </b>

<b>    return tos==0;</b>

<b>  }</b>

<b>  // Возвратить общую емкость стека, </b>

<b>  public int Capacity() {</b>

<b>    return stck.Length;</b>

<b>  }</b>

<b>  // Возвратить количество объектов, находящихся в данный момент в стеке, </b>

<b>  public int GetNum() { </b>

<b>    return tos;</b>

<b>  }</b>

<b>}</b>

<b>class StackDemo {</b>

<b>  static void Main() {</b>

<b>    Stack stk1 = new Stack(10);</b>

<b>    Stack stk2 = new Stack(10);</b>

<b>    Stack stk3 = new Stack(10);</b>

<b>    char ch; </b>

<b>    int i;</b>

<b>    // Поместить ряд символов в стек stk1.</b>

<b>    Console.WriteLine(&quot;Поместить символы А-J в стек stk1.&quot;); </b>

<b>    for(i=0; !stk1.IsFull(); i++) </b>

<b>      stk1.Push((char)('A' + i));</b>

<b>    if(stk1.IsFull()) </b>

<b>      Console.WriteLine(&quot;Стек stk1 заполнен.&quot;);</b>

<b>    // Вывести содержимое стека stk1.</b>

<b>    Console.Write(&quot;Содержимое стека stk1: &quot;); </b>

<b>    while( !stk1.IsEmpty()) {</b>

<b>      ch = stk1.Pop();</b>

<b>      Console.Write(ch);</b>

<b>    }</b>

<b>    Console.WriteLine();</b>

<b>    if(stk1.IsEmpty()) </b>

<b>      Console.WriteLine(&quot;Стек stk1 пуст.&quot;);</b>

<b>    // Поместить дополнительные символы в стек stk1.</b>

<b>    Console.WriteLine(&quot;Вновь поместить символы А-J в стек stk1.&quot;); </b>

<b>    for(i=0; !stk1.IsFull(); i++) </b>

<b>      stk1.Push((char)('A' + i));</b>

<b>    // А теперь извлечь элементы из стека stk1 и поместить их в стек stk2. </b>

<b>    // В итоге элементы сохраняются в стеке stk2 в обратном порядке. </b>

<b>    Console.WriteLine(&quot;А теперь извлечь символы из стека stk1n&quot; +</b>

<b>          &quot;и поместить их в стек stk2.&quot;); </b>

<b>    while( !stk1.IsEmpty()) {</b>

<b>      ch = stk1.Pop(); </b>

<b>      stk2.Push(ch);</b>

<b>    }</b>

<b>    Console.Write(&quot;Содержимое стека stk2: &quot;); </b>

<b>    while( !stk2.IsEmpty() ) {</b>