Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 도커 mysql
- 파이썬
- MySQL
- 푸시푸시
- java
- mysql docker
- 코딩
- docker
- nvidia docker
- python
- elk stack
- C언어
- 정보처리기사
- 앤서블 설치
- ansible install
- 스트림셋
- 도커 시작하기
- 데이터베이스
- streamsets 강의
- 도커
- 자바
- 도커 elk
- c
- mysql on docker
- 스트림셋이란?
- 백준
- 알고리즘
- 클라우드
- c++
- 데이트
Archives
- Today
- Total
리그캣의 개발놀이터
자료구조-다항식 사용[C언어] 본문
다항식 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | #include <stdio.h> #include <stdlib.h> typedef struct ListNode{ //다항식 리스트의 노드 구조 정의 float coef; int expo; struct ListNode *link; }ListNode; typedef struct ListHead{ //다항식 리스트의 헤더 노드 구조 정의 ListNode *head; }ListHead; ListHead *createLinkedList(void) //공백 다항식 리스트 생성 연산 { ListHead *L; L=(ListHead *)malloc(sizeof(ListHead)); L->head=NULL; return L; } void addLastNode(ListHead *L,float coef, int expo)//다항식 리스트에 마지막 노드 삽입 연산 { ListNode *newNode; ListNode *p; newNode = (ListNode *)malloc(sizeof(ListNode)); newNode->coef=coef; newNode->expo=expo; newNode->link=NULL; if(L->head==NULL){ //현재 다항식 리스트가 공백인 경우, L->head=newNode; return; } else //현재 다항식 리스트가 공백이 아닌경우, { p=L->head; while(p->link!=NULL){ //라스트의 마지막 노드를 찾아서 p=p->link; } p->link=newNode; //현재의 마지막 노드 뒤에 새 노드를 연결한다. } } void addPoly(ListHead *A, ListHead *B, ListHead *C) //두 다항식의 합을 구하는 연산 { ListNode *pA=A->head; ListNode *pB=B->head; float sum; while(pA&&pB){ //두다항식에 노드가 있는 동안 반복 수행 if(pA->expo==pB->expo){ //다항식 A의 지수가 다항식 B의 지수와 같은 경우 sum=pA->coef+pB->coef; addLastNode(C,sum,pA->expo); pA=pA->link,pB=pB->link; } else if(pA->expo>pB->expo){ //다항식 A의 지수가 다항식 B의 지수보다 큰 경우 addLastNode(C,pA->coef,pA->expo); pA=pA->link; } else if(pA->expo<pB->expo){ //다항식 B의 지수가 다항식 A의 지수보다 큰 경우 addLastNode(C,pB->coef,pB->expo); pB=pB->link; } } for(;pA!=NULL;pA=pA->link) addLastNode(C,pA->coef,pA->expo); for(;pB!=NULL;pB=pB->link) addLastNode(C,pB->coef,pB->expo); } void printPoly(ListHead *L) //다항식 리스트를 출력하는 연산 { ListNode *p=L->head; for(;p;p=p->link){ printf("%3.0fx^%d",p->coef,p->expo); } } void main(void){ ListHead *A,*B,*C; A=createLinkedList(); //공백 다항식 리스트 A,B,C 생성하기 B=createLinkedList(); C=createLinkedList(); addLastNode(A,4,3); //다항식 리스트 A에 4x^3 노드 추가 addLastNode(A,3,2); //다항식 리스트 A에 3x^2 노드 추가 addLastNode(A,5,1); //다항식 리스트 A에 5x^1 노드 추가 printf("\n A(x)="); printPoly(A); //다항식 리스트 A 출력하기 addLastNode(B,3,4); //다항식 리스트 B에 3x^4 노드 추가 addLastNode(B,1,3); //다항식 리스트 B에 1x^3 노드 추가 addLastNode(B,2,1); //다항식 리스트 B에 2x^1 노드 추가 addLastNode(B,1,0); //다항식 리스트 B에 1x^0 노드 추가 printf("\n B(x)="); printPoly(B); //다항식 리스트 B 출력하기 addPoly(A,B,C); //다항식의 덧셈 연산 수행 printf("\n C(x)="); printPoly(C); //다항식 리스트 C출력하기 getchar(); } | cs |
'프로그래밍 기본 > 자료구조' 카테고리의 다른 글
자료구조 - 포인터 사용 오름차 정렬[C언어] (0) | 2018.01.21 |
---|---|
자료구조 - 다항식의 덧셈(C 언어) (0) | 2018.01.21 |
자료구조 - 수식과 STACK 사용(C언어) (0) | 2018.01.21 |
자료구조-문자열 출력[C언어] (0) | 2018.01.21 |
자료구조-구구단 출력하기[C언어] (0) | 2018.01.21 |
Comments