링크드리스트 관련하여 질문드립니다..ㅠㅠ 3일째 계속 진전이 없어 글올려봅니다!
글쓴이: gol f@Google / 작성시간: 일, 2018/10/07 - 5:37오후
미리 배정된 메모리공간에 링크드리스트를 이용해 데이터를 추가 삭제 를 구현하는 프로그램 일부인데요 add함수를 계속해서 못구현하고 있어 질문드립니다. compare를 이용해 알파벳순으로 노드를 추가하는 함수여야 하는데 항상 동적할당으로 연결만 해주다가 이미 배정된공간에 노드를 연결하려니 너무 어려워 질문드립니다!
add 함수 에서 freenode와 newnode함수를 사용해서 sort를 이용하지 않고 compare함수를 이용해서 노드간 비교해 알파벳순으로 재현해야되는데 ... 이외 정의된 함수를 변경해서는 안되는데 ...
도와주세요 ㅠㅠ
#include <stdio.h> #include <stdlib.h> #include <string.h> struct record { char name[3]; char number[4]; struct record * next; }; struct record pool[5]; struct record * top = pool; int compare(char key[3], struct record *); struct record * data = NULL; struct record * newnode() { 구현 } void freenode(struct record *r) { 구현 } void add(char *name, char *number) { 미구현 }
Forums:
참고해보세요.
변수 배열 사용하듯이. 값을 출력해서 확인해보세요. ㅇ_ㅇ;;
http://codepad.org/cWnB6V2f
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
안녕하세요 참고하여 제가 메인프로그램까지 수정하여
안녕하세요 참고하여 제가 메인프로그램까지 수정하여 파일을 올려보았는데 미구현 부분 다시한번 질문드립니다 ㅠㅠ
add 안에서 알파벳순으로 노드가 추가되야 하는데 그부분을 도저히 모르겟습니다///
참고해보세요.
일단. 포인터와 변수에 관련된 책 예제를 확인해보세요. ㅇ_ㅇ;;
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
안녕하세요 참고하여 제가 메인프로그램까지 수정하여
안녕하세요 참고하여 제가 메인프로그램까지 수정하여 파일을 올려보았는데 미구현 부분 다시한번 질문드립니다 ㅠㅠ
POOL_SIZE 에러
POOL_SIZE 에러
해 봤더니
나오네요?
세벌 https://sebuls.blogspot.kr/
헉 왜그런건가요?? 사이즈가 왜 에러지..
헉 왜그런건가요?? 사이즈가 왜 에러지..
일반적인 링크드리스트와 다른점이 거의 없습니다.
일반적인 링크드리스트와 다른점이 거의 없습니다.
새 노드 생성시 malloc대신 newnode를 사용하고, 해제시에 free 대신에 freenode를 사용하는 것만 제외하면 일반 링크드리스트와 다른점이 하나도 없습니다.
결국 add함수가 하는 것은 리스트의 삽입정렬과 동일하네요.
newnode로 새 노드를 생성하고, compare 함수를 통해 올바른 위치를 찾아 새로운 노드를 삽입하면 됩니다.
위에 karkayan님 말씀처럼, init
위에 karkayan님 말씀처럼, init_pool에서 각 원소들을 next 필드를 통해 연결시키고 있어서 현혹되기 쉽긴 한데, 저건 그저 노드 풀을 관리하기 위한 거고, 실제로 데이터가 들어 있는 리스트는 직접 연결시켜야 하는 것 같습니다. 그러면 malloc 쓸 자리에 newnode 썼다고 생각하고 malloc 쓸 때와 똑같이 하시면 되고... (오히려 과제로는 newnode와 freenode 구현하는 걸 내면 좋을 것 같은데)
다만 newnode()에서 top 이 NULL일 때는 if 블록 안에서 바로 NULL을 반환하도록 고쳐주어야지, 지금 상태에서는 top = r->next 할 때 폴트 나겠네요.
좋은 하루 되세요!
와 진짜 감사해요!!! 아 newNode
와 진짜 감사해요!!! 아 newNode freenode구현은 제가 직접 한건데 애드 부분만 설명을 들어도 직접 구현하지 못하고 있엇네요 감사합니다
댓글 달기