а что? гугл уже тоже заблокировали?
стек на C#
ps вспомнил, был тут вопрос об оптимизации стека, где то в
январе 2017, чел там на классах все расписал, но в приоритете была именно скорость )).. но еще и было требование функций модифкации стека.. оказалось у меня сохранился проект. вот код (System.Diagnostics необходим для замеров времени исполнения)
using System;
using System.Diagnostics;
namespace stack
{
public class Program
{
static private int max = 100_000_000;
class Stack
{
private int[] sd = new int[max];
private int sp = -1;
public void Push(int data) => sd[++sp] = data;
public int Pop() => sd[sp--];
public void Rep(int sp, int data) => sd[sp] = data;
public void Inc(int sp, int data) => sd[sp] += data;
public void Dec(int sp, int data) => sd[sp] -= data;
public void Xor(int sp, int data) => sd[sp] %= data;
}
public static void StackTest()
{
var watch = new Stopwatch();
var stack = new Stack();
var count = max;
watch.Start();
for (int i = 0; i < count; i++)
stack.Push(i);
watch.Stop();
Console.WriteLine(watch.Elapsed);
watch.Restart();
for (int i = 0; i < count; i++)
stack.Xor(i, 2);
watch.Stop();
Console.WriteLine(watch.Elapsed);
watch.Restart();
for (int i = 0; i < count; i++)
stack.Pop();
watch.Stop();
Console.WriteLine(watch.Elapsed);
Console.ReadKey();
}
public static void Main() => StackTest();
}
}
! данный прототип действительно не содержит ни каких обработчиков возможного переполнения ;))
ну и кусок кода
https://i.imgur.com/AejLUcX.png для классического стека, скорее всего совсем не нужен ))
всяческие bool empty() ... это
bool empty() => sp < 0;
.. ну в смысле для данного прототипа ))