C 자료구조/2. 연결 리스트

Linked List의 활용 - 다항식의 표현 및 기본 연산

DesignatedRoom 2021. 3. 24. 17:53

다항식의 항이 지수와 계수로 표현된다고 하자.

 

 

다항식은 기본적으로 지수가 높은 항이 먼저 나온다. 즉, 지수에 대한 내림차순이 필요하다.

항을 다항식에 저장할 때, 적당한 위치를 찾아 삽입을 하면 된다.

이 역할을 할 함수의 이름은 SortInsertNode이다.

즉, 연결리스트에 지수값을 큰 값 순으로 저장을 하면 된다.

이는 앞의 내용을 이용하면 쉽게 구현할 수 있다.

아래 글의 SortInsertNum 함수를 적당히 변형해서 만들 수 있다. 차이는 정렬함수의 부등호의 방향만 바꿔주면 된다.

designatedroom87.tistory.com/387

 

Linked List - 여러 가지 연산

아래의 포스트에는 기본적인 연산만을 작업했다. 여기서는 데이터의 중복 삭제, 데이터의 중간 삽입 등에 대한 연산에 대해 구현할 것이다. 여기서 할 작업은 아래의 내용과는 이어지지 않는다.

designatedroom87.tistory.com

 

 

SortInsertNode 함수를 보도록 하자. 

이 함수를 구현하기에 앞서, 아래의 보조 함수가 하나 필요하다.

위 포스트에 있는 함수와 비교해보면 부등호가 반대임을 알 수 있다. 그 이유는 낮은차순 정렬을 해야해서 그렇다.

아래의 SortInsertNode 함수의 내용이 긴데, 원리는 위 포스트 글의 SortInsertNum 함수와 같다.

다만 새롭게 추가하려고 하는 항이 기존의 다항식에 있는 경우에 대해서 처리를 하는 과정이 추가되었다.

 

 

아래의 두 함수는 다항식의 초기화하는 함수와 다항식의 내용을 출력하는 함수들이다.

별도의 설명이 필요 없을 것 같다.

 

 

그리고 아래는 두 다항식을 더하는 함수이다.

두 다항식을 탐색하면서, 지수가 일치하는 경우와 다른 경우에 대해서 처리를 하면 된다.

아래의 else if 문과 else문을 따로 두지 않고 else문 하나로 표현해도 괜찮을 것 같다.

그 이유는 위의 SortInsertNode 함수가 이들에 대한 예외처리를 모두하고 있기 때문이다.

즉, else문에서 SortInsertNode 함수를 각 각 2번 호출해서 pCur1과 pCur2의 각 각의 항을 모두 저장하고

pCur1과 pCur2를 각 각 다음 노드로 이동시키는 내용을 적으면 될 것 같다.

쉽게 설명하면 지수가 다른 경우에는 연산을 할 수가 없기 때문에 새로운 항으로 추가를 하면 된다.

SortInsertNode 함수는 노드를 추가할 때마다 지수의 내림차순으로 저장하기 때문에 

이를 개의치 않고 SortInsertNode 함수를 호출해서 쓰면 된다.

 

 

그리고 아래는 두 다항식을 빼는 함수이다.

위의 덧셈함수와 원리는 같다.

 

 

main 함수

 

 

프로그램 실행결과

 

 

소스 파일

main.c
0.01MB