โ ์ค๋์ ์ง๋ (2022/04/15)
1. ์ฐ๊ฒฐ ์๋ฃ๊ตฌ์กฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ดํด
2. ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ๋
3. ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
4. ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ
5. ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์์ฉ ๋ฐ ๊ตฌํ
โ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ตฌ์กฐ
โ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ์์ ์ฝ์
1. ์ฝ์ ํ ๋ ธ๋ ์ค๋น : ๊ณต๋ฐฑ ๋ ธ๋๋ฅผ ๊ฐ์ ธ์ ํฌ์ธํฐ ๋ณ์ new๊ฐ ๊ฐ๋ฆฌํค๊ฒ ํจ
2. ์ ๋ ธ๋์ ๋ฐ์ดํฐ ํ๋ ๊ฐ ์ ์ฅ : new์ ๋ฐ์ดํฐ ํ๋์ "์"๋ฅผ ์ ์ฅ
3. ์ ๋ ธ๋์ ๋งํฌ ํ๋ ๊ฐ ์ง์
4. ๋ฆฌ์คํธ์ ์ ๋ ธ๋์ ์ ๋ ธ๋ ์ฐ๊ฒฐ
โก ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์ฝ์ ์๊ณ ๋ฆฌ์ฆ
โ ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ์์ ์ญ์
1. ์ ๋ ธ๋๋ฅผ ์ฐพ์
2. ์ ๋ ธ๋์ ์ญ์ ํ ๋ ธ๋์ ๋งํฌ ํ๋ ๊ฐ ์ ์ฅ (์์ ๋งํฌ์ ์์ ๋งํฌ 200 ์ ์ฅ)
3. ์ญ์ ํ ๋ ธ๋์ ์๋ค ๋ ธ๋ ์ฐ๊ฒฐ
โก ๋จ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์ญ์ ์๊ณ ๋ฆฌ์ฆ
โ ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
โก ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ๋ ธ๋ ์ฝ์ ์๊ณ ๋ฆฌ์ฆ
โก ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ฒซ ๋ฒ์งธ ๋ ธ๋ ์ฝ์ ์๊ณ ๋ฆฌ์ฆ
โก ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์ญ์ ์๊ณ ๋ฆฌ์ฆ
โ ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ
โก ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ๊ตฌ์กฐ์ ๊ตฌ์กฐ์ฒด
โก ์ด์ค ์ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
โก ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์ฝ์ ์๊ณ ๋ฆฌ์ฆ
โก ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋ ์ญ์ ์๊ณ ๋ฆฌ์ฆ
โ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์์ฉ ๋ฐ ๊ตฌํ
โก ๋คํญ์ ๋ ธ๋๋ฅผ ์ฌ์ฉํ ํํ
ex) A(x) = 4x^3 + 3x^2 + 2
โก ๋คํญ์ ๋์ ํญ ์ถ๊ฐ ์๊ณ ๋ฆฌ์ฆ
โ ๊ด๋ จ ์ฝ๋
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct ListNode{
char data[10];
struct ListNode* link;
} ListNode;
typedef struct{
listNode* head;
} linkedList_h;
linkedList_h* createLinkedList_h(void);
void freeLinkedList_h(linkedList_h*);
void addLastNode(linkedList_h*, char*);
void reverse(linkedList_h*);
void deleteLastNode(linkedList_h*);
void printList(linkedList_h*);
linkedList_h* createLinkedList_h(void){
linkedList_h* L;
L = (linkedList_h*)malloc(sizeof(linkedList_h));
L -> head = NULL;
return L;
}
void addLastNode(linkedList_h* L, char* x){
listNode* newNode;
listNode* p;
newNode = (listNode*)malloc(sizeof(listNode));
strcpy(newNode->data, x);
newNode->link= NULL;
if (L->head == NULL){
L->head = newNode;
return;
}
p = L->head;
while (p->link != NULL) {
p = p->link;
}
p ->link = newNode;
}
void reverse(linkedList_h * L){
listNode* p;
listNode* q;
listNode* r;
p = L->head;
q=NULL;
r=NULL;
while (p!= NULL){
r = q;
q = p;
p = p->link;
q->link = r;
}
L->head = q;
}
void deleteLastNode(linkedList_h * L){
listNode* previous;
listNode* current;
if (L->head == NULL) return;
if (L->head->link == NULL) {
free(L->head);
L->head = NULL;
return;
}
else {
previous = L->head;
current = L->head->link;
while(current ->link != NULL){
previous = current;
current = current->link;
}
free(current);
previous->link = NULL;
}
}
void freeLinkedList_h(linkedList_h* L){
listNode* p;
while(L->head != NULL){
p = L->head;
L->head = L->head->link;
free(p);
p=NULL;
}
}
void printList(linkedList_h* L){
listNode* p;
printf("L = (");
p= L->head;
while(p != NULL){
printf("%s", p->data);
p = p->link;
if(p != NULL){
printf(", ");
}
}
printf(") \n");
}
int main(){
linkedList_h* L;
L = createLinkedList_h();
printf("(1) ๊ณต๋ฐฑ๋ฆฌ์คํธ ์์ฑํ๊ธฐ! \n");
printList(L); getchar();
printf("(2) ๋ฆฌ์คํธ์ 3๊ฐ์ ๋
ธ๋ ์ถ๊ฐํ๊ธฐ! \n");
addLastNode(L, "์");
addLastNode(L, "์");
addLastNode(L, "๊ธ");
printList(L); getchar();
printf("(3) ๋ฆฌ์คํธ ๋ง์ง๋ง์ ๋
ธ๋ ํ๊ฐ ์ถ๊ฐํ๊ธฐ! \n");
addLastNode(L, "์ผ");
printList(L); getchar();
printf("(4) ๋ง์ง๋ง ๋
ธ๋ ์ญ์ ํ๊ธฐ! \n");
deleteLastNode(L);
printList(L); getchar();
printf("(5) ๋ฆฌ์คํธ ์์๋ฅผ ์ญ์์ผ๋ก ๋ณํํ๊ธฐ! \n");
reverse(L);
printList(L); getchar();
printf("(6) ๋ฆฌ์คํธ ๊ณต๊ฐ์ ํด์ ํ์ฌ, ๊ณต๋ฐฑ๋ฆฌ์คํธ ์ํ๋ก ๋ง๋ค๊ธฐ! \n");
freeLinkedList_h(L);
printList(L);
getchar();
return 0;
}
#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){
sum = pA->coef + pB->coef;
addLastNode(C, sum, pA->expo);
pA=pA->link; pB=pB->link;
}
else if(pA->expo > pB->expo){
addLastNode(C, pA->coef, pA->expo);
pA=pA->link;
}
else {
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();
B = createLinkedList();
C = createLinkedList();
addLastNode(A, 4,3);
addLastNode(A, 3,2);
addLastNode(A, 5,1);
printf("\n A(x)=");
printPoly(A);
addLastNode(B, 3,4);
addLastNode(B, 1,3);
addLastNode(B, 2,1);
addLastNode(B, 1,0);
printf("\n B(x)=");
printPoly(B);
addPoly(A, B, C);
printf("\n C(x)=");
printPoly(C);
getchar();
}
โ ์ค๋์ ๊ณผ์
'๐ป Extracurricular > MENTORING' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ICON] C์ธ์ด ๋ฉํ ๋ง - 3์ฐจ์ (0) | 2022.05.18 |
---|---|
[ICON] C์ธ์ด ๋ฉํ ๋ง - 2์ฐจ์ (0) | 2022.05.17 |
[SOS CLASS] ์๋ฃ๊ตฌ์กฐ๊ธฐ์ด - 3์ฐจ์ (0) | 2022.04.15 |
[ICON] C์ธ์ด ๋ฉํ ๋ง - 1์ฐจ์ (0) | 2022.04.05 |
[SOS CLASS] ์๋ฃ๊ตฌ์กฐ๊ธฐ์ด - 2์ฐจ์ (0) | 2022.04.04 |