-
Linked List의 활용 - 다항식의 표현 및 기본 연산C 자료구조/2. 연결 리스트 2021. 3. 24. 17:53
다항식의 항이 지수와 계수로 표현된다고 하자.
다항식은 기본적으로 지수가 높은 항이 먼저 나온다. 즉, 지수에 대한 내림차순이 필요하다.
항을 다항식에 저장할 때, 적당한 위치를 찾아 삽입을 하면 된다.
이 역할을 할 함수의 이름은 SortInsertNode이다.
즉, 연결리스트에 지수값을 큰 값 순으로 저장을 하면 된다.
이는 앞의 내용을 이용하면 쉽게 구현할 수 있다.
아래 글의 SortInsertNum 함수를 적당히 변형해서 만들 수 있다. 차이는 정렬함수의 부등호의 방향만 바꿔주면 된다.
designatedroom87.tistory.com/387
SortInsertNode 함수를 보도록 하자.
이 함수를 구현하기에 앞서, 아래의 보조 함수가 하나 필요하다.
위 포스트에 있는 함수와 비교해보면 부등호가 반대임을 알 수 있다. 그 이유는 낮은차순 정렬을 해야해서 그렇다.
아래의 SortInsertNode 함수의 내용이 긴데, 원리는 위 포스트 글의 SortInsertNum 함수와 같다.
다만 새롭게 추가하려고 하는 항이 기존의 다항식에 있는 경우에 대해서 처리를 하는 과정이 추가되었다.
아래의 두 함수는 다항식의 초기화하는 함수와 다항식의 내용을 출력하는 함수들이다.
별도의 설명이 필요 없을 것 같다.
그리고 아래는 두 다항식을 더하는 함수이다.
두 다항식을 탐색하면서, 지수가 일치하는 경우와 다른 경우에 대해서 처리를 하면 된다.
아래의 else if 문과 else문을 따로 두지 않고 else문 하나로 표현해도 괜찮을 것 같다.
그 이유는 위의 SortInsertNode 함수가 이들에 대한 예외처리를 모두하고 있기 때문이다.
즉, else문에서 SortInsertNode 함수를 각 각 2번 호출해서 pCur1과 pCur2의 각 각의 항을 모두 저장하고
pCur1과 pCur2를 각 각 다음 노드로 이동시키는 내용을 적으면 될 것 같다.
쉽게 설명하면 지수가 다른 경우에는 연산을 할 수가 없기 때문에 새로운 항으로 추가를 하면 된다.
SortInsertNode 함수는 노드를 추가할 때마다 지수의 내림차순으로 저장하기 때문에
이를 개의치 않고 SortInsertNode 함수를 호출해서 쓰면 된다.
그리고 아래는 두 다항식을 빼는 함수이다.
위의 덧셈함수와 원리는 같다.
main 함수
프로그램 실행결과
소스 파일
'C 자료구조 > 2. 연결 리스트' 카테고리의 다른 글
Linked List의 활용 - 파일 입출력 활용 (0) 2021.03.24 Linked List - 리스트를 역순으로 바꾸기 (0) 2021.03.24 Linked List - 여러 가지 연산 (0) 2021.03.24 Linked List - 기본 연산 (0) 2020.07.19