[자료구조] 3. 스택(Stack)

업데이트:

카테고리:

태그: ,




스택(Stack)

스택(Stack)







스택(Stack)

특징, 장단점

특징
   1. 노드 기반 구조 : 데이터 , 포인터
   2. 비연속적 메모리 할당
   3. 동적 크기 조정

장점
   1. 동적인 메모리 관리
   2. 데이터 삽입. 삭제 편함

단점
   1. 메모리 오버헤드 : 각 노드가 데이터, 포인터를 저장, 메모리 많이 사용
   2. 순차 탐색 접근 : 배열과 달리 특정 요소에 접근하기 위해서는 리스트를 순차적으로 탐색해야함.



게임 개발 활용

활용 상황
   1. 데이터가 자주 추가되거나 제거 상황
   2. 접근하는게 순차적일때
   3. 크기가 불확실할 때

활용 예시
   1. 동적 인벤토리 시스템
   2. npc 행동 관리(순차적)
   3. 레벨 내 동적 객체 관리(맵에서 적, 아이템 장애물 등 추가 제거)
   4. 멀티플레이어 게임에서 플레이어 관리(접속해제 빈번, 플레이어 관리 용이)
   5. 타이머 이벤트 관리(시간 순서 이벤트, 예전된 이벤트 실행, 제거에 편리)


플레이어 이전위치
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
    private Stack<Vector3> movementHistory;

    void Start()
    {
        movementHistory = new Stack<Vector3>();
    }

    void Update()
    {
        // 플레이어 이동 관리 로직
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            MovePlayer(Vector3.forward);
        }

        // 이동 취소 (Undo)
        if (Input.GetKeyDown(KeyCode.Z) && movementHistory.Count > 0)
        {
            UndoMovement();
        }
    }

    void MovePlayer(Vector3 direction)
    {
        movementHistory.Push(transform.position); // 현재 위치 저장
        transform.position += direction; // 플레이어 이동
    }

    void UndoMovement()
    {
        Vector3 previousPosition = movementHistory.Pop(); // 이전 위치 가져오기
        transform.position = previousPosition; // 플레이어 위치 복원
    }
}







TOP




📔

댓글남기기