Ejemplo n.º 1
0
        public static RecursList <int> ForthTask(RecursList <int> t, int b)
        {
            var res = new RecursList <int>();

            for (int i = 0; i < t.Length; i++)
            {
                if (t[i] < b)
                {
                    res.Add(t[i]);
                }
            }
            for (int i = 0; i < t.Length; i++)
            {
                if (t[i] == b)
                {
                    res.Add(t[i]);
                }
            }
            for (int i = 0; i < t.Length; i++)
            {
                if (t[i] > b)
                {
                    res.Add(t[i]);
                }
            }
            return(res);
        }
Ejemplo n.º 2
0
        public static void FifthTask(RecursList <int> t)
        {
            Console.WriteLine("Начальный список:");
            t.Print();
            int max = 0;
            int min = 0;

            for (int i = 0; i < t.Length; i++)
            {
                if (t[i] > t[max])
                {
                    max = t[i];
                }
            }
            Console.WriteLine("Max index = {0}", max);

            for (int i = 0; i < t.Length; i++)
            {
                if (t[i] < t[min])
                {
                    min = t[i];
                }
            }
            Console.WriteLine("Min index = {0}", min);
            Console.WriteLine();
            t.SwapRef(min, max);
            t.Print();
        }
Ejemplo n.º 3
0
        static int part_sort(RecursList <int> a)
        {
            int s = 1, e = a.Length - 1;

            while (s <= e)
            {
                while (s != a.Length && a[s] < a[0])
                {
                    s++;
                }
                while (e != 0 && a[e] > a[0])
                {
                    e--;
                }
                if (s <= e)
                {
                    int temp = a[s];
                    a[s] = a[e];
                    a[e] = temp;
                    s   += 1;
                    e   -= 1;
                }
            }
            int temp1 = a[0];

            a[0] = a[e];
            a[e] = temp1;
            return(e);
        }
Ejemplo n.º 4
0
 private void printDebug(RecursList <T> Item)
 {
     if (Item.Tail != null)
     {
         printDebug(Item.Tail);
     }
     Console.WriteLine("[{1}] = {0} | {2}", Item.Info, Item.Index, Item.Length);
 }
Ejemplo n.º 5
0
 private void print(RecursList <T> Item)
 {
     if (Item.Tail != null)
     {
         print(Item.Tail);
     }
     Console.Write("{0} ", Item.Info);
 }
Ejemplo n.º 6
0
 public void Add(T value)//добавление элемента
 {
     Tail = new RecursList <T>(Info, Tail);
     Info = value;
     Index++;
     if (Index == 0)
     {
         Tail = null;
     }
 }
Ejemplo n.º 7
0
 public static void FirstTask(RecursList <int> t)
 {
     for (int i = 0; i < t.Length; i++)
     {
         if (t[i] % 2 == 0)
         {
             t.Del(i);
         }
     }
 }
Ejemplo n.º 8
0
        public static void TenTask(RecursList <int> a)
        {
            if (a.Length <= 1)
            {
                return;
            }
            if (a.Length == 2)
            {
                if (a[0] > a[1])
                {
                    int temp = a[0];
                    a[0] = a[1];
                    a[1] = temp;
                }
                return;
            }
            int ind = part_sort(a);

            if (ind == 0)
            {
                var a2 = new RecursList <int>();
                for (int i = ind + 1; i < a.Length; i++)
                {
                    a2.Add(a[i]);
                }
                TenTask(a2);
                for (int i = ind + 1; i < a.Length; i++)
                {
                    a[i] = a2[i - ind - 1];
                }
            }
            else
            {
                var a1 = new RecursList <int>();
                for (int i = 0; i < ind; i++)
                {
                    a1.Add(a[i]);
                }
                var a2 = new RecursList <int>();
                for (int i = ind + 1; i < a.Length; i++)
                {
                    a2.Add(a[i]);
                }
                TenTask(a1);
                TenTask(a2);
                for (int i = ind + 1; i < a.Length; i++)
                {
                    a[i] = a2[i - ind - 1];
                }
                for (int i = 0; i < ind; i++)
                {
                    a[i] = a1[i];
                }
            }
        }
Ejemplo n.º 9
0
 public int Find(T value)//поиск элемента
 {
     for (RecursList <T> i = this; i != null; i = i.Tail)
     {
         if (i.Info.Equals(value))
         {
             return(i.Index);
         }
     }
     return(-1);
 }
Ejemplo n.º 10
0
        }//

        public List <int> FindAll(T value)
        {
            List <int> temp = new List <int>();

            for (RecursList <T> i = this; i != null; i = i.Tail)
            {
                if (i.Info.Equals(value))
                {
                    temp.Add(i.Index);
                }
            }
            return(temp);
        }
Ejemplo n.º 11
0
 static void sort(RecursList <int> t)
 {
     for (int i = 0; i < t.Length; i++)
     {
         for (int j = t.Length - 1; j > i; j--)
         {
             if (t[j] < t[j - 1])
             {
                 t.Swap(j, j - 1);
             }
         }
     }
 }
Ejemplo n.º 12
0
 private RecursList(T value, RecursList <T> othertail)
 {
     Info = value;
     Tail = othertail;
     if (othertail != null)
     {
         Index = othertail.Index + 1;
     }
     else
     {
         Index = 0;
     }
 }
Ejemplo n.º 13
0
        public T this[int index]//индексатор списка
        {
            get
            {
                try
                {
                    if (index < 0 || index >= Length)
                    {
                        throw new Exception("Индекс за границей списка");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    return(default(T));
                }
                for (RecursList <T> i = this; i != null; i = i.Tail)
                {
                    if (i.Index == index)
                    {
                        return(i.Info);
                    }
                }
                return(default(T));
            }

            set
            {
                try
                {
                    if (index < 0 || index >= Length)
                    {
                        throw new Exception("Индекс за границей списка");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    return;
                }

                for (RecursList <T> i = this; i != null; i = i.Tail)
                {
                    if (i.Index == index)
                    {
                        i.Info = value;
                    }
                }
            }
        }
Ejemplo n.º 14
0
        public static int NineTask(RecursList <int> a)
        {
            var t = new RecursList <int>();

            for (int i = 0; i < a.Length; i++)
            {
                if (t.Find(a[i]) == -1)
                {
                    t.Add(a[i]);
                }
            }
            //t.Print();
            return(t.Length);
        }
Ejemplo n.º 15
0
 public static void sortSimple(RecursList <int> mas)
 {
     for (int i = 1; i < mas.Length; i++)
     {
         if (mas[i - 1] > mas[i])
         {
             int j    = i - 1;
             int temp = mas[i];
             while (j >= 0 && mas[j] > temp)
             {
                 mas[j + 1] = mas[j--];
             }
             mas[++j] = temp;
         }
     }
 }
Ejemplo n.º 16
0
        public void Del(int index)
        {
            try
            {
                if (index < 0 || index >= Length)
                {
                    throw new Exception("Индекс находится за границей списка");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return;
            }

            #region Удаление последнего элемента
            if (index == Index)
            {
                Index--;
                if (Index == -1)
                {
                    return;
                }
                Info = Tail.Info;
                Tail = Tail.Tail;
                return;
            }
            #endregion

            RecursList <T> i = this;
            for (; i.Tail.Tail != null; i = i.Tail)
            {
                i.Index--;
                if (i.Tail.Index == index)
                {
                    i.Tail = i.Tail.Tail;
                    return;
                }
            }
            if (index == 0)
            {
                i.Tail = null;
                i.Index--;
            }
        }
Ejemplo n.º 17
0
        public static int EightTask(RecursList <int> t, RecursList <int> p)
        {
            sortSimple(t);
            sortSimple(p);
            int count = 0;

            for (int i = 0; i < t.Length; i++)
            {
                for (int j = 0; j < p.Length; j++)
                {
                    if (t[i] == p[j])
                    {
                        count++;
                    }
                }
            }
            return(count);
        }
Ejemplo n.º 18
0
        public static RecursList <int> SecondTask(RecursList <int> t)
        {
            var res = new RecursList <int>();

            for (int i = 0; i < t.Length; i++)
            {
                if (t[i] % 2 == 0)
                {
                    res.Add(t[i]);
                }
            }
            for (int i = 0; i < t.Length; i++)
            {
                if (t[i] % 2 != 0)
                {
                    res.Add(t[i]);
                }
            }
            return(res);
        }
Ejemplo n.º 19
0
        public void SwapRef(int first, int second)//меняет ссылки
        {
            RecursList <T> f = null, s = null;

            if (Index != first && Index != second)
            {
                for (RecursList <T> i = this; i.Tail != null; i = i.Tail)
                {
                    if (i.Tail.Index == first)
                    {
                        f = i;
                        break;
                    }
                }
                for (RecursList <T> i = this; i.Tail != null; i = i.Tail)
                {
                    if (i.Tail.Index == second)
                    {
                        s = i;
                        break;
                    }
                }
                if (f == null || s == null)
                {
                    return;
                }
                var t = f.Tail;
                f.Tail       = s.Tail;
                s.Tail       = t;
                t            = f.Tail.Tail;
                f.Tail.Tail  = s.Tail.Tail;
                s.Tail.Tail  = t;
                f.Tail.Index = first;
                s.Tail.Index = second;
            }
            else
            {
                Swap(first, second);
            }
        }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            var t   = new RecursList <int>();
            var rnd = new Random();

            for (int i = 1; i <= 10; i++)
            {
                t.Add(i);
            }
            //FirstTask(t);
            //t.Print();
            //SecondTask(t).Print();
            //Console.WriteLine(ThirdTask("({})[]"));
            // for task 4
            RecursList <int> rl = new RecursList <int>();

            for (int i = 0; i < 10; i++)
            {
                rl.Add(rnd.Next(100));
            }
            var c = new CountTimeAndExport2EXCEL.CountTime(sort);

            CountTimeAndExport2EXCEL.FunWithExcel.Save(c.StartCount(), @"E:\ALG\lab2.1.xlsx");

            /*rl.Print();
            *  sort(rl);
            *  rl.Print();*/
            //ForthTask(rl, 3).Print();
            //FifthTask(t);
            //SeventhTask(t).Print();


            //t.Print();
            //sortSimple(rl);
            //rl.Print();
            //Console.WriteLine();
            //Console.WriteLine(EightTask(t, rl));
        }
Ejemplo n.º 21
0
        public void Insert(int index, T value)
        {
            try
            {
                if (index < 0 || index > Length)
                {
                    throw new Exception("Индекс находится за границей списка");
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return;
            }

            if (index == Length)
            {
                Add(value);
                return;
            }

            if (Index == -1)
            {
                Add(value);
                return;
            }
            for (RecursList <T> i = this; i != null; i = i.Tail)
            {
                if (i.Index == index)
                {
                    i.Tail = new RecursList <T>(value, i.Tail);
                    i.Index++;
                    return;
                }
                i.Index++;
            }
        }
Ejemplo n.º 22
0
 public RecursList(T value)
 {
     Info  = value;
     Tail  = null;
     Index = 0;
 }
Ejemplo n.º 23
0
 public static RecursList <int> SeventhTask(RecursList <int> t)
 {
     t.Reverse();
     return(t);
 }
Ejemplo n.º 24
0
 public RecursList()
 {
     Info  = default(T);
     Tail  = null;
     Index = -1;
 }
Ejemplo n.º 25
0
 public void DelAll()
 {
     Index = -1;
     Tail  = null;
 }