Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace TodoApplication
- {
- public class Item<T>
- {
- public T Value { get; set; }
- public Item<T> Previous { get; set; }
- public Item<T> Next { get; set; }
- }
- public class LimitedSizeStack<T>
- {
- public int Limit;
- public int CountVar;
- public Item<T> Start = new Item<T> { Previous = null, Next = null };
- public Item<T> Final = new Item<T> { Previous = null, Next = null };
- public LimitedSizeStack(int limit)
- {
- Limit = limit;
- }
- public void Push(T item)
- {
- if (Start != null)
- {
- if (CountVar < Limit)
- {
- CountVar++;
- Final.Next = new Item<T> { Value = item, Previous = Final };
- Final = Final.Next;
- }
- else if (CountVar == Limit)
- {
- Final.Next = new Item<T> { Value = item, Previous = Final };
- Final = Final.Next;
- Start = Start.Next;
- Start.Previous = null;
- }
- }
- else
- {
- CountVar++;
- Start = Final = new Item<T> { Value = item };
- }
- }
- public T Pop()
- {
- if (Start != Final)
- {
- var value = Final.Value;
- Final = Final.Previous;
- Final.Next = null;
- CountVar--;
- return value;
- }
- else
- {
- var value = Start.Value;
- Start = Final = null;
- CountVar--;
- return value;
- }
- }
- public int Count
- {
- get
- {
- return CountVar;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement