안녕하세요, 여행벌입니다.
C언어로 쉽게 풀어쓴 자료구조 6장 - 연결리스트1 연습문제 풀이입니다.
01 ~ 08 번은 손으로 09 ~ 24번은 직접 코드 구현으로 문제를 해결했습니다.
틀린 부분 혹은 이해가 안가시는 부분은 같이 댓글로 얘기해봐요!
[ 9번 ]
책의 insert와 다르게 insert된 Node를 연결리스트 제일 뒤에다가 붙이고 출력하면 입력한 순서대로 저장할 수 있습니다.
[ 10번 ]
연결리스트를 head부터 순회하며 count 해주면 됩니다.
[ 11번 ]
10번과 마찬가지로 head부터 순회하며 sum 해주면 됩니다.
[ 12번 ]
head부터 순회하며 특정 데이터를 count 해주면 됩니다.
[ 13번 ]
head부터 순회하며 특정 데이터를 찾고 그 부분을 책과 같이 remove 해주면 됩니다.
[ 14번 ]
Node에 이름, 나이, 키를 담을 수 있게 구조체를 새롭게 선언해주면 됩니다.
기타 다른 연산은 책과 동일하게 진행하면 되므로 생략하겠습니다.
[ 15번 ]
연결리스트를 head부터 순회하며 min, max 값을 저장하고 return 해주면 됩니다.
[ 16번 ]
먼저, 첫 번째 데이터를 삭제하고 그 뒤부터 한 칸씩 건너뛰며 삭제하면 됩니다.
연습문제 중에 가장 해결하기 까다로웠던 것 같습니다.
[ 17번 ]
연결리스트 A, B의 노드들을 똑같이 번갈아가며 새로운 연결리스트에 삽입해주면 됩니다.
[ 18번 ]
연결리스트 A, B의 노드들을 앞에서부터 순회하며 더 작은 값을 새로운 연결리스트에 삽입해주면 됩니다.
[ 19번 ]
연결리스트 C를 순회하며 flag 변수를 이용해 하나씩 번갈아가며 A, B에 노드를 삽입해주면 됩니다.
[ 20번 ]
책에도 자세히 나와있는 코드로 설명을 생략하겠습니다.
[ 21번 ]
값 x가 들어오면 expon만큼 x를 곱해서 x^expon을 만들고 거기에 coef를 곱해주며 sum하면 됩니다.
[ 22번 ]
배열을 이용해서 리스트를 구현하면 됩니다.
[ 23번 ]
앞에서 다루던 연결리스트 함수들을 조금씩만 수정해주면 됩니다.
[ 24번 ]
희소행렬은 14번과 마찬가지로 구조체만 새롭게 선언해주면 구현하는데 큰 어려움이 없습니다.
구조체만 코드로 표현했습니다.