public SimpleStack Copy() { int[] data2 = new int [stackSize]; SimpleStack stackCopy = new SimpleStack(stackSize); for (int i = 0; i < stackSize; i++) { data2[i] = data[i]; Console.WriteLine(data2[i]); } return(stackCopy); }
public SimpleStack Merge(SimpleStack Stack2) { SimpleStack MergeStack = null; int[] dataMerge = null; MergeStack = new SimpleStack((Stack2.SizeOfStack + SizeOfStack)); dataMerge = new int[MergeStack.SizeOfStack]; int IdxStack1 = 0; int IdxStack2 = 0; int IdxStackMerge = 0; while (IdxStack1 < data.Length) { if (data[IdxStack1] == 0) { IdxStack1 = data.Length; } else { if (data[IdxStack1] != 0) { dataMerge[IdxStackMerge] = data[IdxStack1]; IdxStack1++; IdxStackMerge++; } } } while (IdxStack2 < Stack2.data.Length) { dataMerge[IdxStackMerge] = Stack2.data[IdxStack2]; IdxStackMerge++; IdxStack2++; } return(MergeStack); }
static void Main(string[] args) { #region Eigenschaften SimpleStack s1 = null; int StackSize = 0; int Auswahl = 0; int Element = 0; int SuchendesElement = 0; int GroesserOderKleinerer = 0; int Wertaenderung = 0; int AuswahlStack = 0; SimpleStack Stack2 = null; #endregion // #region Tests // Console.WriteLine("TestCase_IsFull" + TestCase_IsFull()); // Console.WriteLine("TestCase_IsEmpty" + TestCase_IsEmpty()); // Console.WriteLine("TestCase_GetElement" + TestCase_GetElement(s1)); //// Console.WriteLine("TestCasePop" + TestCasePop()); // Console.WriteLine("RunTestCasePush" + RunTestCasePush()); // Console.WriteLine("TestCaseFind" + TestCaseFind()); //// Console.WriteLine("TestCaseCopy" + TestCaseCopy()); // Console.WriteLine("Testcase_Merge" + Testcase_Merge()); // #endregion #region Erzeugen StackSize = GetAValid(1, 20, "Welche Groesse soll Ihr Stack haben?"); try { s1 = new SimpleStack(StackSize); } catch (Exception StackSizeFail) { Console.WriteLine("Fehler: " + StackSizeFail.Message); } StackSize = GetAValid(1, 20, "Welche Groesse soll Ihr 2.Stack haben?"); try { Stack2 = new SimpleStack(StackSize); } catch (Exception StackSizeFail) { Console.WriteLine("Fehler: " + StackSizeFail.Message); } #endregion #region Menue do { Auswahl = GetAValid(0, 9, "Push = 1\nPop = 2\nFind = 3\nGetElement = 4\nResize = 5\nCopy = 6\nMerge = 7\nIs Full = 8\nIs Empty = 9"); switch (Auswahl) { #region Push case 1: try { AuswahlStack = GetAValid(1, 2, "1. oder 2. Stack"); Element = GetAValid(1, 100, "Welche Zahl moechtest du hinzufuegen?"); if (AuswahlStack == 1) { s1.Push(Element); Console.WriteLine("Element " + Element + " wurde zum 1.Stack hinzugefuegt"); } else { if (AuswahlStack == 2) { Stack2.Push(Element); Console.WriteLine("Element " + Element + " wurde zum 2.Stack hinzugefuegt"); } } Console.WriteLine("Klicken um fortzufahren!"); Console.ReadLine(); } catch (IndexOutOfRangeException StackFail2) { Console.WriteLine("Fehler: " + StackFail2.Message); } break; #endregion #region Pop case 2: try { AuswahlStack = GetAValid(1, 2, "1. oder 2. Stack"); if (AuswahlStack == 1) { s1.Pop(); Console.WriteLine("Element wurde aus 1.Stack geloescht!"); } else { if (AuswahlStack == 2) { Stack2.Pop(); Console.WriteLine("Element wurde aus 2.Stack geloescht!"); } } Console.WriteLine("Klicken um fortzufahren!"); Console.ReadLine(); } catch (IndexOutOfRangeException StackFail3) { Console.WriteLine("Fehler: " + StackFail3.Message); } break; #endregion #region Find case 3: AuswahlStack = GetAValid(1, 2, "1. oder 2. Stack"); SuchendesElement = GetAValid(1, 100, "Welche Zahl willst du suchen?"); if (AuswahlStack == 1) { Console.WriteLine("Die Zahl wurde " + s1.Find(SuchendesElement) + "-mal im 1.Stack gefunden."); } else { if (AuswahlStack == 2) { Console.WriteLine("Die Zahl wurde " + Stack2.Find(SuchendesElement) + "-mal im 2.Stack gefunden"); } } Console.WriteLine("Klicken um fortzufahren!"); Console.ReadLine(); break; #endregion #region GetElement case 4: AuswahlStack = GetAValid(1, 2, "1. oder 2. Stack"); if (AuswahlStack == 1) { Console.WriteLine("Letztes Element (1.Stack) = " + s1.GetElement()); } else { if (AuswahlStack == 2) { Console.WriteLine("Letztes Element (2. Stack) = " + Stack2.GetElement()); } } Console.WriteLine("Klicken um fortzufahren!"); Console.ReadLine(); break; #endregion #region Resize case 5: AuswahlStack = GetAValid(1, 2, "1. oder 2. Stack"); if (AuswahlStack == 1) { GroesserOderKleinerer = GetAValid(0, 1, "Moechtest du den 1.Stack vergroessern(0) oder verkleinern(1)"); Wertaenderung = GetAValid(1, 10, "Um wie viel moechten Sie den 1.Stack vergroessern bzw. verkleinern"); Console.WriteLine("Neue Groesse (1.Stack) = " + s1.Resize(GroesserOderKleinerer, Wertaenderung)); } else { if (AuswahlStack == 2) { GroesserOderKleinerer = GetAValid(0, 1, "Moechtest du den 2.Stack vergroessern(0) oder verkleinern(1)"); Wertaenderung = GetAValid(1, 10, "Um wie viel moechten Sie den 2.Stack vergroessern bzw. verkleinern"); Console.WriteLine("Neue Groesse (2.Stack) = " + Stack2.Resize(GroesserOderKleinerer, Wertaenderung)); } } Console.WriteLine("Klicken um fortzufahren!"); Console.ReadLine(); break; #endregion #region Copy case 6: AuswahlStack = GetAValid(1, 2, "1. oder 2. Stack"); SimpleStack StackCopy = null; if (AuswahlStack == 1) { StackCopy = new SimpleStack(s1.SizeOfStack); s1.Copy(); } else { if (AuswahlStack == 2) { StackCopy = new SimpleStack(s1.SizeOfStack); Stack2.Copy(); } } Console.WriteLine("Klicken um fortzufahren!"); Console.ReadLine(); break; #endregion #region Merge case 7: s1.Merge(Stack2); Console.WriteLine("Klicken um fortzufahren!"); Console.ReadLine(); break; #endregion #region IsFull case 8: AuswahlStack = GetAValid(1, 2, "1. oder 2. Stack"); if (AuswahlStack == 1) { Console.WriteLine("Is Stack1 Full? = " + s1.IsFull()); } else { if (AuswahlStack == 2) { Console.WriteLine("Is Stack2 Full? = " + Stack2.IsFull()); } } Console.WriteLine("Klicken um fortzufahren!"); Console.ReadLine(); break; #endregion #region IsEmpty case 9: AuswahlStack = GetAValid(1, 2, "1. oder 2. Stack"); if (AuswahlStack == 1) { Console.WriteLine("Is Stack1 Empty? = " + s1.IsEmpty()); } else { if (AuswahlStack == 2) { Console.WriteLine("Is Stack2 Empty? = " + Stack2.IsEmpty()); } } Console.WriteLine("Klicken um fortzufahren!"); Console.ReadLine(); break; #endregion #region Default default: break; #endregion } Console.Clear(); } while (Auswahl != 0); #endregion Console.WriteLine("Beendet"); }