스택은 LIFO(last in first out)구조로 마지막에 들어온 데이터가 제일 처음 나가는 자료구조이다.
스택의 멤버 함수로는
- Push : 스택 안에 데이터를 넣는다.
- Pop : 스택 안에 저장된 데이터를 꺼낸다.
- Peek : 가장 상단의 데이터를 꺼낸다.
등이 있다.
스택의 장점 :
- : 간단한 구조로 인해 사용이 용이하다.
- 요소의 추가 및 제거가 빠르다.
- 재귀 알고리즘 및 메모리 관리에 유용하다
단점 :
- 고정된 크기때문에 동적 크기 조정이 어렵다
- 중간에 있는 요소에 접근이 불가능하다.
- 스택 관리를 잘못하면 오버플로우가 발생할 수 있다.
using System;
using System.Diagnostics;
using System.Collections.Generic;
namespace _0312
{
class Stack<T>
{
private const int MAX_VALUES = 3;
private int top;
private T[] values;
public Stack()
{
top = -1;//topㅡㅇㄹ -1로 설정
values = new T[MAX_VALUES];//초기화
Array.Clear(values, 0, MAX_VALUES);
}
public void Push(T val)
{
if (top + 1 < MAX_VALUES)
{
values[++top] = val; //값을 스택에 추가하고 Top 증가
}
else
{
Console.WriteLine("오버플로우! 오바이트함");
}
}
public T Pop()
{
if (!Empty())
{
T val = values[top];
values[top--] = default (T);
return val;
}
else
{
Console.WriteLine("언더 플로우");
return default(T);
}
}
public T Top()
{
return values[top];
}
public bool Empty()
{
return top < 0;
}
}
internal class Class2
{
static void Main()
{
Stack<int> stack = new Stack<int>();
stack.Push(20);
stack.Push(20);
stack.Push(30);
try
{
Console.WriteLine(stack.Pop() + " ");
Console.WriteLine(stack.Pop() + " ");
Console.WriteLine(stack.Pop() + " ");
}
catch(Exception ex) {
Console.WriteLine($"{ex.Message}");
}
}
}
}
'C#은 처음이라' 카테고리의 다른 글
C# 리스트(List) (0) | 2024.03.13 |
---|---|
C# 자료구조 (큐Queue) (0) | 2024.03.12 |
C# 이벤트(Event)와 델리게이트(Delegate) (0) | 2024.03.11 |
C# 일반화(Generic) (1) | 2024.03.08 |
C# 문자열(string) (0) | 2024.03.07 |