자료구조 공부하고 있는 프린이에요
동아리에서 윤성우 책 자료구조로 공부하고 있는데 ArrayList.c를 직접 구현하라는 문제가 나왔어요
ArrayList.h랑 ListMain.c만 보고
ArrayList.c의 내용을 채우라는 문제였음
위에는 다 풀고 난 뒤 확인해본 답지고 아래는 제가 푼 소스코드입니다.
아 ~ 나름 잘짠거같아서 선배한테 보여줬는데 알아보기가 힘들다고 욕먹었습니다
이런 소스코드 실무에서 짜면 안되나요?
자료구조 공부하고 있는 프린이에요
동아리에서 윤성우 책 자료구조로 공부하고 있는데 ArrayList.c를 직접 구현하라는 문제가 나왔어요
ArrayList.h랑 ListMain.c만 보고
ArrayList.c의 내용을 채우라는 문제였음
위에는 다 풀고 난 뒤 확인해본 답지고 아래는 제가 푼 소스코드입니다.
아 ~ 나름 잘짠거같아서 선배한테 보여줬는데 알아보기가 힘들다고 욕먹었습니다
이런 소스코드 실무에서 짜면 안되나요?
길어지면 내려 쓰셔도 되요..
1. 필요없는 괄호가 가독성을 해쳐요.
2. 개취존이겠지만 * 를 가운데 적은 사람이 제일 이상함 ㅋㅋ
엿같네 ㅡㅡ
근데 직접 짜야 되는데 함수 써서 그런건 아니겠지?
3. 낙타법을 쓰고 계신데 대소문자, 약자 자주 사용하면 가독성이 떨어집니다.
위에거는 윤성우 꺼 같다... 답지라는데.. .
4. 클래스로 구현해야 될 문제지만 C 로 해보고 계신듯 하니 그건 넘어갈게유.
아 답지구나. 윤성우 바보네.
중간에 * 쓰는 사람은 이제 껏 딱 한사람 밖에 못봄. 윤성우!
insert 등에 사용하는 LData 의 경우 크기가 큰 구조체가 오게 되면 복사가 되어버리죠. 그러니 포인터나 참조로 받아오는게 유리합니다.
int LFirst 이거 개근데... 구조체의 내용이 int 라고 가정하고 return을 하시는것?
리턴값이 *pData 니까 LData 인데 왜 int 를 리턴? ㅋㅋ
데이터가 int인 듯 흔한 자료구조 예제
코드 자체는 보기 어려운 코드가 아닙니다. 다만 단어 선택 같은것들이 눈에 거슬리고 memmove 는 src, dst, size 가 변수로 대입되는 과정을 넣어 여러줄에 풀어 쓰면 좋을 것 같아요.
ㄴㄴ 그럴거면 LData 를 선언하는게 개그니까유.
코딩 스타일은 특별한 제한이 없는 이상 구글님께서 시키는대로 하자
http://jongwook.github.io/google-styleguide/trunk/cppguide.xml
아하 그렇군요... LData는 typedef int LData; 헤더에 이렇게 선언이 돼있어요. arr의 타입이 LData[]인데 책에서는 나중에 arr의 타입을 바꿀 때 모든 함수들을 다 바꿔줘야하니까 typedef로 따로 LData로 별명을 지어줘서 수정을 편하게 한다는 군요..
그러니까 리턴타입도 LData 여야해요.
어떤 타입으로 바껴도 정상 동작되게 해야죠.
아 LFirst 함수는 int형 리턴으로 해놓고 TRUE(1) FALSE(0)을 매크로로 정의 해놓고 bool 처럼 사용하더군요
그럴거면 != 0 으로 한번 더 해줘야 하는거죠 *pData 면 안되고.
ㅊㄹ//되요->돼요 [리듬 맞춤법 봇♬]
ㅇㅇ//는대->는데 [리듬 맞춤법 봇♬]
ㅇㅇ//되고->돼고