C언어 도와주세용 ~
봄여우
#include stdio.h
#include stdlib.h
typedef struct ListNode {
int coef;
int expon;
struct ListNode *link;
} ListNode;
typedef struct ListHeader {
int length;
ListNode *head;
ListNode *tail;
} ListHeader;
// 초기화 함수
void init(ListHeader *plist)
{
plist-length = 0;
plist-head = plist-tail = NULL;
}
// plist는 연결 리스트의 헤더를 가리키는 포인터, coef는 계수, expon는 지수
void insert_node_last(ListHeader *plist, int coef, int expon)
{
ListNode *temp = (ListNode *)malloc(sizeof(ListNode));
if( temp == NULL ){
fprintf(stderr,메모리 할당 에러\n);
exit(1);
}
temp-coef=coef;
temp-expon=expon;
temp-link=NULL;
if( plist-tail == NULL ){
plist-head = plist-tail = temp;
}
else {
plist-tail-link = temp;
plist-tail = temp;
}
plist-length++;
}
//
void poly_add(ListHeader *plist1, ListHeader *plist2, ListHeader *plist3 )
{
ListNode *a = plist1-head;
ListNode *b = plist2-head;
int sum;
while(a && b){
if( a-expon == b-expon ){
sum = a-coef + b- coef;
if( sum != 0 ) insert_node_last(plist3, sum, a-expon);
a=a-link; b=b-link;
}
else if( a-expon b-expon ){
insert_node_last(plist3, a-coef, a-expon);
a=a-link;
}
else {
insert_node_last(plist3, b-coef, b-expon);
b=b-link;
}
}
// a나 b중의 하나가 먼저 끝나게 되면 남아있는 항들을 모두
// 결과 다항식으로 복사
for( ; a != NULL; a=a-link)
insert_node_last(plist3, a-coef, a-expon);
for( ; b != NULL; b=b-link)
insert_node_last(plist3, b-coef, b-expon);
}
//
void poly_print(ListHeader *plist)
{
ListNode *p=plist-head;
for(;p;p=p-link){
printf(%d %d\n, p-coef, p-expon);
}
}
//
main()
{
ListHeader list1, list2, list3;
init(&list1);
init(&list2);
init(&list3);
// 다항식 1을 생성
insert_node_last(&list1, 3,12);
insert_node_last(&list1, 2,8);
insert_node_last(&list1, 1,0);
// 다항식 2를 생성
insert_node_last(&list2, 8,12);
insert_node_last(&list2, -3,10);
insert_node_last(&list2, 10,6);
// 다항식 3 = 다항식 1 + 다항식 2
poly_add(&list1, &list2, &list3);
poly_print(&list3);
}이 소스코드를 다항식 뺼셈으로 바꾸고 메인 함수에 있는 걸 항이 10개 짜리로 바꾸는 과제인데요......
이해가 안가요...ㅠ.ㅠ 도와주세요~~
이 소스코드에 대한 설명과 위에 말씀드린 조건으로 바꾼 소스코드 부탁드립니당 ㅠ.ㅠ
-
알찬해 2025-01-14
누가 댁의 과제를 대신해주랴...
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2681742 | c언어로 이미지 자르기 질문드립니다. | DevilsTears | 2025-01-15 |
2681717 | 저 완전 생초본데 여기서 어떻게 해야하죠? ㅠㅠ (1) | 미나래 | 2025-01-14 |
2681689 | if문 질문입니다. (6) | LimeTree | 2025-01-14 |
2681661 | C언어 도와주세용 ~ (1) | 봄여우 | 2025-01-14 |
2681630 | 2진수를 입력받아 10진수로 출력하는 프로그램 (2) | 사이 | 2025-01-14 |
2681602 | 배열을 포인터로 바꾸려면? | DevilsTears | 2025-01-13 |
2681554 | 문장 나누는 함수나 좋은 방법이 있을까요?? (1) | 개굴츼 | 2025-01-13 |
2681503 | cpp 간 변수 이동에 대해;; | 황소숨 | 2025-01-12 |
2681425 | 처음배워서 잘모르겠습니다..ㅠ (3) | 비사벌 | 2025-01-12 |
2681401 | C언어 과제가 하나있는데, 약간의 도움좀 부탁드려요...ㅜㅜ | 채련 | 2025-01-11 |
2681374 | 동전 갯수 구하기 | 반월 | 2025-01-11 |
2681319 | 이거 설명좀 해주실분 ㅜㅜ | 무크 | 2025-01-11 |
2681290 | 최소신장트리와 크루스칼 알고리즘 관련 질문이요 ㅜㅠ | 화이트캣 | 2025-01-10 |
2681260 | 배열에 문자열을 받았는데요. 문자열중 하나를 딱 출력하는게 안되네요.. | 흰두루 | 2025-01-10 |
2681185 | 오늘시작한 초보자인데요..답변좀부탁해요 ㅠ | SchokoHolic | 2025-01-09 |
2681157 | c언어 연결스택 질문이요 | 가리매 | 2025-01-09 |
2681131 | 당연하게 알고있어야되는건데? 저는이해가안가요. | 노아 | 2025-01-09 |
2681107 | 아스키 코드 | 머즌일 | 2025-01-09 |
2681027 | fscanf (2) | 이름없음 | 2025-01-08 |
2680945 | c언어 사용에 대하여 (1) | 피어나 | 2025-01-07 |