(C#) Stack, Queue

장장·2025년 9월 24일

C샵자료구조

목록 보기
3/6

스택과 큐 동영상강의
면접질문: Stack과 Queue의 사용처, 차이
C++와는 사용법이 살짝 다르다

Stack (FILO)

예시: ctrl+z, 롤에코 시간역행
키워드: Push(추가), Pop(삭제), Peek(반환), Any(값존재확인)

사용 예시 코드

class Program
{
    static void Main(string[] args)
    {
        //###3. stack (FILO)
        //면접질문: Stack과 Queue의 사용처, 차이
        //Stack -> ctrl+z 되돌리기 기능
        //Push(추가), Pop(삭제), Peek(반환), Any(값존재확인)
        Stack<char> keyInputs = new Stack<char>();
        keyInputs.Push('a');
        keyInputs.Push('d');
        keyInputs.Push('f');

        char peek = keyInputs.Peek(); //맨뒤에 요소 확인 //c++의 .top(), peek: f
        char corn = keyInputs.Pop(); //맨뒤의 요소를 빼고 corn에 반환, corn: f
        bool isExist = keyInputs.Any();  //요소가 하나라도 존재하면 true반환, isExist : true

        while (keyInputs.Count != 0) //전체 빼기
        {
            Console.WriteLine(keyInputs.Pop()); //d a 
        }

        Console.WriteLine("-----구분선-----");
    }
}

Queue

예시 : 줄서기,커맨드, 롤매칭,RTS건물생산,자판기,턴제, 매크로,스킬예약
키워드 : Enqueue(추가), Dequeue(삭제), Peek(반환), Any(값존재확인)

class Program
{
    static void Main(string[] args)
    {
        Queue<char> keyInputs2 = new Queue<char>();
        keyInputs2.Enqueue('a');   //데이터 추가
        keyInputs2.Enqueue('d');
        keyInputs2.Enqueue('f');

        //while(keyInputs2.Count != 0) //Any와 같은 기능
        while (keyInputs2.Any())
        {
            Console.WriteLine(keyInputs2.Dequeue()); //a d f 
        }
    }
}

0개의 댓글