le_effort   5년 전

이 코드의 뜻이 _linkedList 라는 구조한테

LinkedList; 라는 이름을 주고

맨 마지막 11번째 줄 보면

LinkedList는 List 

즉 처음 구조체를 List라는 이름만으로도 호출할수 있다 라는 것 아닌가요?

그럴거면 처음부터 struct List 라고 하면 될거 같은데 타입데프 쓰는 이유가 무엇인가요?

lolicon   5년 전

처음부터 List로 지정하셔도 됩니다.

이식성과 관련있는 부분인데 PS에선 딱히 신경쓰지 않아도 됩니다.

le_effort   5년 전

이식성과 PS 가 뭔가요?

자료구조 강의에 있는 헤더파일인데 너무 궁금해서요 ,...... 왜 쓰는지

djm03178   5년 전

두 단계로 나누어서 생각해 봅시다.

첫 번째 단계는 자료구조를 설계하고 구현하는 단계입니다. 이 단계에서는 링크드 리스트를 하나 구현했고, 그래서 이름을 LinkedList라고 지었습니다.

두 번째 단계는 이 자료구조를 사용하는 단계입니다. 원하는 것은 특정한 구현 방법이 아니라, 그냥 아무 종류의 리스트나 하나 쓰고 싶습니다. 여러 종류의 링크드 리스트 중에서 링크드 리스트로 구현해놓은 LinkedList가 있습니다. 프로그램의 코드에서는 이 리스트가 어떤 종류인지는 중요하지 않고, 리스트의 기능을 쓸 수만 있으면 되기 때문에 List라는 이름을 쓰고 싶고, 그래서 이름을 List라고 다시 붙여서 사용합니다.

이 방법의 장점은 첫 번째 단계에서 링크드 리스트가 아닌 종류의 리스트를 만들었더라도 두 번째 단계에서는 똑같이 List라는 이름으로 사용할 수 있다는 점입니다.

le_effort   5년 전

이 방법의 장점은 첫 번째 단계에서 링크드 리스트가 아닌 종류의 리스트를 만들었더라도 두 번째 단계에서는 똑같이 List라는 이름으로 사용할 수 있다는 점입니다.

이게 무슨의미인가요? 

링크드리스트가 변수이름을 말씀하시는건가요 아니면 자료구조중에서 링크드리스트 라는게 나오는건가요?

제가 이제 막 공부시작해서 풀어서 설명해주시면 감사하겠습니다 ㅠ

lolicon   5년 전

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년 전

아하 감사합니다 !!

댓글을 작성하려면 로그인해야 합니다.