public Event(Event e)
 {
     this.etype = e.etype;
     //this.Key = e.Key;
     this.time = e.time;
     this.stream_number = e.stream_number;
 }
        public Event GetEvent()
        {
            if (ListSize == 0)
            {
                return null;
            }

            else
            {
                Event er = new Event(data[0]);
                data.RemoveAt(0);
                return er;
            }
        }
        public void Insert(Event n)
        {
            HeapSize++;
            data.Add(n);
            int Index = HeapSize - 1;

            while (Index > 0)
            {
                if (n.time < data[Index / 2].time)
                {
                    Swap(Index, Index / 2);

                }
                else break;
                Index = Index / 2;
            }
        }
        public Event GetEvent()
        {
            if (HeapSize==0)
            {
                return null;
            }

            else
            {
                Event er = new Event(data[0]);
                data.RemoveAt(0);
                HeapSize--;
                if (HeapSize != 0) MoveDownHeap(0);
                return er;

            }
        }
        public void MatlabHeap()
        {
            int a;
            int m=1000;
            int n=1000;
            int b=1000;
            string danet = "";

            DateTime sh, eh;

            for (a = 10; a <= 1000; a ++)
            {

                sh = DateTime.Now;

                Heap heapt = new Heap();

                for (int x = 0; x < a; x++)
                {
                    Event e1 = new Event();
                    e1.time = randomNumber.Next(1, m);       // dodawanie a elementów do listy
                    heapt.Insert(e1);
                }
                for (int x = 0; x < b; x++)
                {
                    heapt.DeleteMax();                       // usuwanie elementów ze stogu
                    Event e2 = new Event();
                    e2.time = randomNumber.Next(1, n);
                    heapt.Insert(e2);                       // dodawanie nowego elementu do listy

                }

                eh = DateTime.Now;                          // zakończenie testu dla listy

                time_h = eh - sh; // obliczenie czasu wykonywania operacji na liście
                danet += (time_h.TotalMilliseconds.ToString() + ";");
            }
            System.IO.File.WriteAllText(@"E:\MatlabStog.txt", danet);
        }
 public void InsertEvent(EventType typ, double time, int stream_number)
 {
     Event E = new Event(typ, time, stream_number);
     Insert(E);
 }
 public void Insert(Event e)
 {
     ListSize++;
     data.Add(e);
     if (ListSize >1) QuickSort(data, 0, ListSize - 1);
 }
        public void MatlabList()
        {
            int a;
            int m=1000;
            int n=1000;
            int b=1000;
            string danet="";

            DateTime sl, el;

            for(a=10;a<=1000; a++)
            {
                sl = DateTime.Now;

                MList listt = new MList();

                for (int x = 0; x < a; x++)
                {
                    Event e1 = new Event();
                    e1.time = randomNumber.Next(1, m);       // dodawanie a elementów do listy
                    listt.Insert(e1);
                }

                for (int x = 0; x < b; x++)
                {
                    listt.DeleteMax();                       // usuwanie elementów ze stogu
                    Event e2 = new Event();
                    e2.time = randomNumber.Next(1, n);
                    listt.Insert(e2);                       // dodawanie nowego elementu do listy
                }

                el = DateTime.Now;                          // zakończenie testu dla listy

                time_l = el - sl; // obliczenie czasu wykonywania operacji na liście
                danet+=(time_l.TotalMilliseconds.ToString()+";");
            }
            System.IO.File.WriteAllText(@"E:\Matlablista.txt",danet);
        }
        public void Start()
        {
            Settings();

            DateTime sl, el, sh, eh;

            /*sl - czas rozpoczęcia testu dla listy
             *el - czas zakoczenia testu dla listy
             *sh - czas rozpoczecia testu dla stogu
             *eh - czas zakoczenia testu dla stogu
             */

            sl = DateTime.Now;                          // rozpoczęcie testu listy

            MList list = new MList();    // inicjalizacja listy

            for (int i = 0; i < a; i++)
            {
                Event e1 = new Event();
                e1.time = randomNumber.Next(1, m);       // dodawanie a elementów do listy
                list.Insert(e1);
            }

            for (int i = 0; i < b; i++)
            {
                list.DeleteMax();                           // usuwanie b elemetów z listy
                Event e2 = new Event();
                e2.time = randomNumber.Next(1, n);
                list.Insert(e2);                            // dodawanie nowego elementu do listy
            }

            el = DateTime.Now;                          // zakończenie testu dla listy

            time_l = el - sl;                           // obliczenie czasu wykonywania operacji na liście

            sh = DateTime.Now;                          // rozpoczęcie testu dla stogu

            Heap heap = new Heap();                     // inicjalizacja stogu

            for (int i = 0; i < a; i++)
            {
                Event e1 = new Event();
                e1.time = randomNumber.Next(1, m);       //dodawanie elementów do stogu
                heap.Insert(e1);
            }

            for (int i = 0; i < b; i++)
            {
                heap.DeleteMax();                       // usuwanie elementów ze stogu
                Event e3 = new Event();
                e3.time = randomNumber.Next(1, n);
                heap.Insert(e3);                            // dodawnie nowego elemetu do stogu
            }

            eh = DateTime.Now;                          // zakończenie testu dla stogu

            time_h = eh - sh;                           // obliczenie czasu wykonywania operacji na stogu

            Console.WriteLine("Czas wykonanego testu dla listy uporządkowanej:" + time_l.TotalMilliseconds.ToString() + " ms");
            Console.WriteLine("Czas wykonanego testu dla stogu:" + time_h.TotalMilliseconds.ToString() + " ms");

            Console.ReadLine();
        }