Csharp/CSharp Tutorial/Data Structure/Your Stack — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 18:31, 26 мая 2010
A stack class for characters.
<source lang="csharp">using System;
class Stack {
char[] stck; // holds the stack int tos; // index of the top of the stack public Stack(int size) { stck = new char[size]; // allocate memory for stack tos = 0; } public void push(char ch) { if(tos==stck.Length) { Console.WriteLine(" -- Stack is full."); return; } stck[tos] = ch; tos++; } public char pop() { if(tos==0) { Console.WriteLine(" -- Stack is empty."); return (char) 0; } tos--; return stck[tos]; } public bool full() { return tos==stck.Length; } public bool empty() { return tos==0; } public int capacity() { return stck.Length; } public int getNum() { return tos; }
} class MainClass {
public static void Main() { Stack stk1 = new Stack(10); Stack stk2 = new Stack(10); Stack stk3 = new Stack(10); char ch; int i; Console.WriteLine("Push A through J onto stk1."); for(i=0; !stk1.full(); i++) stk1.push((char) ("A" + i)); if(stk1.full()) Console.WriteLine("stk1 is full."); Console.Write("Contents of stk1: "); while( !stk1.empty() ) { ch = stk1.pop(); Console.Write(ch); } Console.WriteLine(); if(stk1.empty()) Console.WriteLine("stk1 is empty.\n"); Console.WriteLine("Again push A through J onto stk1."); for(i=0; !stk1.full(); i++) stk1.push((char) ("A" + i)); Console.WriteLine("Now, pop chars from stk1 and push " + "them onto stk2."); while( !stk1.empty() ) { ch = stk1.pop(); stk2.push(ch); } Console.Write("Contents of stk2: "); while( !stk2.empty() ) { ch = stk2.pop(); Console.Write(ch); } Console.WriteLine("Capacity of stk2: " + stk2.capacity()); Console.WriteLine("Number of objects in stk2: " + stk2.getNum()); }
}</source>
Push A through J onto stk1. stk1 is full. Contents of stk1: JIHGFEDCBA stk1 is empty. Again push A through J onto stk1. Now, pop chars from stk1 and push them onto stk2. Contents of stk2: ABCDEFGHIJCapacity of stk2: 10 Number of objects in stk2: 0