성장하는 중 입니다?/자료구조 (4) 썸네일형 리스트형 JAVA 로 자료구조 구현하기 - 1.기초 JAVA 로 코딩테스트 문제를 풀면서 알고리즘을 공부하고 있다. 알고리즘을 공부하는게 단순 문제를 풀면 된다고 생각했지만, 언제 연결리스트를 써야할 지, 언제 배열을 쓰는게 더 효율적인지, 그리고 시간/공간 복잡도를 고려한다면 어떻게 최적화 할 수 있는지 알 수 없었다. 지금까지 거의 단순구조만을 이용해 if 문, for 문을 남발하며 문제를 풀었는데, 이것은 좋은 알고리즘이 아닌 것 같다. 좋은 알고리즘이란 무엇일까? 우선, 자료구조를 직접 구현하며 각각에 대한 이해도를 키워야 할 것 같다. 지난 열혈자료구조 글에서 추상자료형 (Abstract Data Type) 가 무엇인지 지갑과 지갑의 기능을 들어 설명했었는데, 기억이 사라져 다시 글을 보고 왔다. typedef 지갑 {} 으로써 단순 C 언어적 .. "pointer being freed was not allocated"의 늪에 빠졌습니다. 이 포스트는 "윤성우의 열혈 자료구조"를 공부하면서 작성되었습니다. 우선 나는 macOS Big Sur 11.4 에서 Xcode 사용 중이다. Ch03. 연결 리스트의 문제 03-2. NameCard 를 구현하던 중 free() 에서 에러를 만났다. 그리고 며칠동안 이 "pointer being freed was not allocated" 에러에서 빠져나오지 못했다. 처음에는 macOS 에서는 동적할당 하는데 다른점이 있다거나, 메모리가 자동으로 해제된다거나 하는 줄 알았다. 그래서 free() 부분을 지우고, 5. 남아있는 모든 사람의 전화번호 정보를 출력한다. 단계로 넘어갔는데 EXC_BAD_ACCESS 가 뜨면서 빌드에 실패하는 것이다. 이것은 해제된 개체에 액세스 (자동 해제된 객체를 액세스하는 .. 열혈자료구조 - 3.2 배열을 이용한 리스트의 구현 이전 포스트에서 추상 자료형 (ADT) 이란 무엇인지 알아보았는데, 이제 리스트 자료구조의 ADT 를 구현할 것이다. 리스트는 구현방법의 차이에 따라서 순차 리스트와 열결 리스트로 나뉜다. 순차 리스트 - 배열을 기반으로 구현된 리스트 연결 리스트 - 메모리의 동적 할당을 기반으로 구현된 리스트 두 리스트의 ADT는 같을 수도 있고 다를 수도 있다. 리스트 자료구조는 데이터를 나란히 저장하며, 중복된 데이터의 저장을 막지 않는다. 우선, 리스트의 ADT를 기반으로 만들어진 main함수를 보면 리스트의 기능들을 빠르게 이해할 수 있을 것 같다. #include #include "ArrayList.h" int main(void) { // ArrayList의 생성 및 초기화 List list; int data.. 열혈자료구조 - 3.1 추상 자료형 (Abstract Data Type) * 이 포스트는 도서 '윤성우의 열혈 자료구조' 를 기반으로 작성되었다. 챕터3 - '연결리스트' 부터 포스트를 작성했는데, 챕터3 부터 진정한 자료구조 이야기가 시작되는 느낌이기 때문이다. (챕터1, 2은 자료구조에 대한 간략한 개념 설명과 알고리즘과의 연관성, 재귀함수에 대한 내용) 지갑에 대한 추상 자료형 = 지갑의 기능을 나열한 것 : 카드의 삽입 카드의 추출 동전의 삽입 동전의 추출 지폐의 삽입 지폐의 추출 (추상 자료형은 기능의 나열일 뿐, 어떤 절차를 거쳐 기능을 하는 지는 언급하지 않는다. ) 지갑의 구조체를 정의하고, 100원짜리 동전의 수와 5000원짜리 지폐의 수를 정의했다. typedef struct _wallet { int coin100Num; int bill5000Num; } W.. 이전 1 다음