예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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");
        }