처음부터 List로 지정하셔도 됩니다.
이식성과 관련있는 부분인데 PS에선 딱히 신경쓰지 않아도 됩니다.
두 단계로 나누어서 생각해 봅시다.
첫 번째 단계는 자료구조를 설계하고 구현하는 단계입니다. 이 단계에서는 링크드 리스트를 하나 구현했고, 그래서 이름을 LinkedList라고 지었습니다.
두 번째 단계는 이 자료구조를 사용하는 단계입니다. 원하는 것은 특정한 구현 방법이 아니라, 그냥 아무 종류의 리스트나 하나 쓰고 싶습니다. 여러 종류의 링크드 리스트 중에서 링크드 리스트로 구현해놓은 LinkedList가 있습니다. 프로그램의 코드에서는 이 리스트가 어떤 종류인지는 중요하지 않고, 리스트의 기능을 쓸 수만 있으면 되기 때문에 List라는 이름을 쓰고 싶고, 그래서 이름을 List라고 다시 붙여서 사용합니다.
이 방법의 장점은 첫 번째 단계에서 링크드 리스트가 아닌 종류의 리스트를 만들었더라도 두 번째 단계에서는 똑같이 List라는 이름으로 사용할 수 있다는 점입니다.
PS는 Problem Solving의 약자입니다. 알고리즘 문제풀이라고 보시면 됩니다.
자매품으로 CP가 있습니다. 이는 Competitive Programming의 약자이며, 경쟁하는 방식이므로 대회를 떠올리시면 되겠습니다.
이식성은 환경이 다른 곳에 용이하게 이식할 수 있는 성질을 뜻합니다.
위의 LinkedList를 typedef를 쓰지 않고 프로그램 전체에서 사용했다고 가정해봅시다.
예를 들어, 만약에 위 LinkedList가 32bit 환경에서만 원활히 작동하고 64bit용(LinkedList64라고 칭하겠습니다)이 따로 존재한다면
typedef LinkedList List; 가 없다면 모든 소스파일을 수정하거나 LinkedList 내용을 통째로 고쳐야합니다.
하지만 typedef LinkedList List; 를 사용했다면 모든 소스파일을 수정할 필요도, LinkedList 내용을 고칠 필요도 없습니다.
typedef LinkedList64 List; 로 수정하기만 하면 끝나기 때문입니다.
댓글을 작성하려면 로그인해야 합니다.
le_effort 5년 전
이 코드의 뜻이 _linkedList 라는 구조한테
LinkedList; 라는 이름을 주고
맨 마지막 11번째 줄 보면
LinkedList는 List
즉 처음 구조체를 List라는 이름만으로도 호출할수 있다 라는 것 아닌가요?
그럴거면 처음부터 struct List 라고 하면 될거 같은데 타입데프 쓰는 이유가 무엇인가요?