자료구조

[자료구조] 8장. 연결 리스트 스택 (지역변수) (Stack Linked List)

팔공산호랑이 2020. 4. 10. 17:05

------------------------------------------------------

------------------------------------------------------

 

------------------------------------------------------

 

------------------------------------------------------

 

------------------------------------------------------

지역변수 버전이기 때문에

이전에 전역변수로 썻던

노드 포인터들을

모두 지역변수로 바꾸어 줍니다.

, 메인함수 내부로 위치를 옮겨주게 되는데

이렇게 지역변수로 선언하게 되면 정말 많은게 바뀌게 됩니다.

------------------------------------------------------

 

------------------------------------------------------

------------------------------------------------------

------------------------------------------------------

------------------------------------------------------

------------------------------------------------------

------------------------------------------------------

노드 포인터가 전역변수에서 지역변수로 바뀌었기 때문에

노드 포인터를 넘겨받을수 있는 매개변수가 필요합니다.

, 함수 내부에서 지역변수의 값이 바뀔수있게 매개변수를 설정해주어야 하는데

이것의 구현을 위해선 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차원 노드 포인터

함수 내부에선

참조 연산자를 사용하여

함수 밖의 포인터가 변경되도록 하는것입니다.

나머지는 노드를 이동시켜 출력하는것은 이전과 똑같습니다.

------------------------------------------------------

서치노드 함수도

마찬가지로

찾으면 출력하고

끝까지 못찾으면

캔트 파인드가 출력됩니다.

------------------------------------------------------