Создать свой стек и сделать в нем сортировку - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток!!! Помогите создать свой стек и сделать в нем сортировку, просто тот стек который есть в C# не подходит, так как по моему заданию его нельзя использовать. Буду благодарен

Решение задачи: «Создать свой стек и сделать в нем сортировку»

textual
Листинг программы
using System;
using System.Text;
 
namespace ConsoleApplication18
{
    class Program
    {
        class Node
        {
            public int val;
            public Node next;
            public Node prev;
        }
 
        class Stack
        {
            private Node root;
            private Node top;
 
            public void Push(int _val)
            {
                if (root == null)
                {
                    root = new Node();
                    root.val = _val;
                    top = root;
                }
                else
                {
                    top.next = new Node();
                    top.next.val = _val;
                    top.next.prev = top;
                    top = top.next;
                }
            }
            public int Pop(int _val)
            {
                int result;
                if (root == null)
                {
                    Console.WriteLine("Error: stack is empty");
                }
                else if (root == top)
                {
                    result = root.val;
                    root = null;
                    return result;
                }
                result = top.val;
                top = top.prev;
                top.next = null;
                return result;
            }
            private Node ElementAt(int num)
            {
                if (root != null && num > -1)
                {
                    int c = 0;
                    Node current = root;
                    while (c < num)
                    {
                        c++;
                        current = current.next;
                    }
                    return current;
 
                }
                return null;
            }
            private int Count()
            {
                int c = 0;
                if (root != null)
                {
                    Node current = root;
                    while (current != top)
                    {
                        c++;
                        current = current.next;
                    }
                    c++;
                }
                return c;
            }
            public void Sort()
            {
                int n = this.Count();
                int step = n / 2;
                int j;
                while (step > 0)
                {
                    for (int i = 0; i < (n - step); i++)
                    {
                        j = i;
                        while (j >= 0 && this.ElementAt(j).val > this.ElementAt(j + step).val)
                        {
                            Node first = this.ElementAt(j);
                            Node second = this.ElementAt(j + step);
                            int buf = first.val;
                            first.val = second.val;
                            second.val = buf;
                            j--;
                        }
                    }
                    step /= 2;
                }
            }
 
 
 
            public void Print()
            {
                if (root == null)
                {
                    Console.WriteLine("Stack is empty");
                    return;
                }
                Node i = root;
                while (i != top)
                {
                    Console.Write(i.val.ToString() + " ");
                    i = i.next;
                }
                Console.WriteLine(top.val.ToString());
            }
        }
 
        public static void Main(string[] args)
        {
 
            Stack stack = new Stack();
            stack.Push(5);
            stack.Push(3);
            stack.Push(7);
            stack.Push(2);
            stack.Push(1);
            stack.Print();
            stack.Sort();
            stack.Print();
            Console.ReadKey();
            Console.ReadKey();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы