배열에서 pop은 물리적 삭제가 아니라 논리적으로 삭제되는 것이다. 그 이유는 배열의 값을 삭제할 수 없으니까 top을 1만큼 낮게 이동시킴으로서 삭제됐다고 생각을 한다. 배열에 남은 값은 쓰레기값이다. top의 값이 -1이라는 것은 저장된 값이 없는 것이다. empty이다 이것을 underflow 상태라고 한다. 이제 다시 top을 0으로 이동하고 새로운 값을 push하면 남아있던 쓰레기값이 사라지고 새로운값이 들어가는 것이다. 이것이 물리적인 삭제가 된 상태이다. 이것을 가능토록 해주는 것은 변수 top이다. 만약에 top이 4가 된다면 이것은 full로 overflow상태이다. 배열의 마지막 방은 배열의 크기보다 1만큼 작다. 원래 배열의 크기가 5였으므로 max_size - 1이므로 top이 4일때 overflow이다.
00:00 스택(Stack) 이란?
04:17 배열을 이용한 스택
15:13 연결리스트를 이용한 스택
▶ 소스코드 : cafe.naver.com/honeyc/46334
이제 스택 잘 배워보겠습니다.
이번 강의 잘 들었습니다. 감사합니다!!
설명 진짜 잘하시는 거 아시죠?
최고입니다. 교수님들이랑은 비교도 안 될정도로 잘하시는데 강의를 무료로 올려주시다니.. 존경합니다 ㅜㅜ
제 강의를 좋게 생각해주셔서 정말 감사 드립니다🙏 더 좋은 강의로 보답할게용~
진짜 학원수업 듣고 이해가 하나도 안갔는데 혀니쌤 강의보고 이해가 잘 됐네요!! 고맙습니다😊
이해가 되신다니 정망 기쁘네용😊
구독하고 매일 다른 영상들 듣고 있어요!!
ㅎㅎㅎㅎ 정말 감사합니다~🙏
완벽한 설명입니다!!!!
감사합니다😊
감사합니다
스택을 배열로 구현하려면 top변수 필요. push, pop할 때 top값 증감시킴. underflow는 top = -1, overflow는 top = max_size-1
스택을 연결리스트로 구현하려면 맨앞삽입, 맨앞삭제. free함수로 물리적 삭제. underflow는 head = NULL일 때, overflow는 부존재
진짜 저를 살리셧어요…..
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 축하드려용🤣
단일연결리스트 배울 때는 생전 첨 보는 걸 배우는 느낌이라 힘들었는데,
스택은 단일연결리스트에서 배운 개념을 활용하는 거라서 훨신 수월하네요.
앞으로 나오는 큐, 트리, 힙, 그래프, 해시 이런 것들도 다 그런 식인가요?
넹 연결리스트로 구현하는건 다 같아요~🤗
그래프와 트리는 구조가 좀 더 복잡 합니다.
연결리스트로 스택을 구현할 때 맨앞삽입으로만 해야하는건가요? 맨뒤삽입으로 해도 똑같은 것 같은데 이유가 있는걸까요? 아니면 그냥 코딩하는 사람의 취향차인건가요?
맨 앞 삽입 시 삽입한 역순으로 연결되며,
맨 뒤 삽입 시 삽입한 순으로 연결됩니다:)
@@withhoneyc 네 그건 이해를 했는데요 근데 맨뒷 삽입을 하고 맨 뒤 삭제를 하면 결과는 똑같아지잖아요? 그럼 연결리스트는 배열과 달리 순서가 중요하지 않은 것 같다고 생각이 들어서요. 넣고 빼는 방향만 맞춰주면 되는게 아닌가요?
아 넹넹 순서만 맞추면 됩니다:)
다만 벌도의 포인터가 없는 경우 맨 뒤 삽입의 시간복잡도도는 O(N)이고, 맨 앞 삽입은 O(1)입니다.
@@withhoneyc 아~ 그래서 맨앞삽입을 사용하는거군요! 이해했습니다. 감사합니다!
배열에서 pop은 물리적 삭제가 아니라 논리적으로 삭제되는 것이다. 그 이유는 배열의 값을 삭제할 수 없으니까 top을 1만큼 낮게 이동시킴으로서 삭제됐다고 생각을 한다. 배열에 남은 값은 쓰레기값이다. top의 값이 -1이라는 것은 저장된 값이 없는 것이다. empty이다 이것을 underflow 상태라고 한다.
이제 다시 top을 0으로 이동하고 새로운 값을 push하면 남아있던 쓰레기값이 사라지고 새로운값이 들어가는 것이다. 이것이 물리적인 삭제가 된 상태이다. 이것을 가능토록 해주는 것은 변수 top이다. 만약에 top이 4가 된다면 이것은 full로 overflow상태이다.
배열의 마지막 방은 배열의 크기보다 1만큼 작다. 원래 배열의 크기가 5였으므로 max_size - 1이므로 top이 4일때 overflow이다.
와우!!! 책 쓰셔도 되겠어요!!! 정확하네요!!!