[자료구조] 8장. 연결 리스트 스택 (지역변수) (Stack Linked List)
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
지역변수 버전이기 때문에
이전에 전역변수로 썻던
이 노드 포인터들을
모두 지역변수로 바꾸어 줍니다.
즉, 메인함수 내부로 위치를 옮겨주게 되는데
이렇게 지역변수로 선언하게 되면 정말 많은게 바뀌게 됩니다.
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
노드 포인터가 전역변수에서 지역변수로 바뀌었기 때문에
이 노드 포인터를 넘겨받을수 있는 매개변수가 필요합니다.
즉, 함수 내부에서 지역변수의 값이 바뀔수있게 매개변수를 설정해주어야 하는데
이것의 구현을 위해선 call by reference에 대한 이해가 필수적입니다.
두번째 매개변수로 무엇이 와야 하는지 생각해보면 좋을것 같습니다.
------------------------------------------------------
https://tv.kakao.com/v/408046066
push 함수 동영상
------------------------------------------------------
------------------------------------------------------
전역변수 버전에선 매개변수가 필요하지 않았지만
지역변수 버전에선 매개변수가 필요하고
어떤 형태의 매개변수가 필요한지는 생각해보면 좋을것 같습니다.
------------------------------------------------------
https://tv.kakao.com/v/408046095
pop 함수 동영상
------------------------------------------------------
------------------------------------------------------
마찬가지로
전역변수 버전에서
지역변수 버전으로 바뀌면서
매개변수가 추가됩니다.
------------------------------------------------------
https://tv.kakao.com/v/408046137
print_node 함수 동영상
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
https://tv.kakao.com/v/408046148
search_node 함수 동영상
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
헤더파일과 노드 구조체도 같고
------------------------------------------------------
함수 프로토 타입부터 다르게 되는데
노드 이중 포인터가 필요합니다.
1차원 노드 포인터의 주소를 받아서
내부에서 참조 연산자를 사용해
Main함수의 1차원 노드 포인터를 참조하여 값을 바꿉니다.
------------------------------------------------------
그리고 노드 포인터는
메인함수 내부로 들어와서
지역변수가 되었습니다.
그리고 밑에 선택문이 존재합니다.
------------------------------------------------------
적절한 기능을 선택하고
주위할점은
푸쉬함수에서
함수에 입력해주는 첫번째 값으로
스택탑의 주소가 들어가게 됩니다.
1차원의 노드 포인터의 주소가 들어가게 되므로
매개변수는 2차원 노드 포인터가 되고
내부에서 메인함수의 노드 값이 바뀌게 됩니다.
------------------------------------------------------
바뀐 푸쉬함수를 살펴보면
매개변수에
노드타입 이중포인터가 추가되었습니다.
이 매개변수가
1차원 노드 포인터의 주소를 받고
푸쉬 함수 내부에서
메인함수에 있는 스택탑의 값이 바뀌어야 하므로
참조연산자를 사용하여
별디 스택탑을 사용하여 값을 바꾸어 줍니다.
------------------------------------------------------
팝 함수도 마찬가지인데
팝 함수 내부에서
메인함수의 노드 포인터들의 값이 바뀌어야 하므로
매개변수가 2차원 노드 포인터가 되어
메인함수에 있는 1차원 노드 포인터의 주소를 넘겨받고
팝 함수 내부에서
별 디 스택탑, 별 디 델
이런 식으로 참조연산자를 사용하여
메인함수에 있는 포인터들의 값이 변경 되도록 합니다.
------------------------------------------------------
마찬가지로 프린트 노드 함수도
2차원 노드 포인터
함수 내부에선
참조 연산자를 사용하여
함수 밖의 포인터가 변경되도록 하는것입니다.
나머지는 노드를 이동시켜 출력하는것은 이전과 똑같습니다.
------------------------------------------------------
서치노드 함수도
마찬가지로
찾으면 출력하고
끝까지 못찾으면
캔트 파인드가 출력됩니다.
------------------------------------------------------