문제 번호 1472. -- 2020-데이터구조-중간고사-1번

1472: 2020-데이터구조-중간고사-1번

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 300  해결 문제 수: 116
[제출][채점 상황 열람][게시판]

문제 설명

SLL로 표현된 양의 정수란 것이 있다. 

예를 들어, 양의 정수 123을 SLL로 표현하면

 head-->3-->2-->1-->null  와  같이,

일의 자리 숫자부터 거꾸로 노드에 저장된 형태를 말한다.

이러한 SLL로 표현된 양의 정수들을 입력으로 받아,

그합을 다시 SLL로 표현된 양의 정수로 반환하는

 함수 doWork()를 아래 프로그램에서 완성하시오.

doWork()는 SLL로 표현된 2개의 양의 정수를 입력으로 받아,

그 합을 구한 후,SLL로 표현하여, 첫 번째 노드를 가리키는 주소를 반환한다.

입력으로 head-->9-->4-->null, head-->1-->5-->null를 받으면

이는 숫자 49와 51이므로,

합인 100을 반환하는 SLL은 head-->0-->0-->1-->null 이 되어야 한다.


입력과 출력에는 신경쓰지 말고, doWork( )만 주어진 조건에 맞추어 구현하시오.

doWork( )이외에 추가 함수를 구현하는 것은 허용되지만,

기존 주어진 코드를 수정할 경우 0점 처리합니다.

제출 시에는 전체 코드를 복사하고, doWork() 부분만 채워넣어서

제출하면 된다.


#include <stdio.h>
#include <stdlib.h>

struct node
{
	int value;
	struct node* next;
};

struct node* doMistery(int _v)
{
	struct node* head = 0;

	while (1)
	{
		struct node* temp = 0;
		int d = _v % 10;

		temp = (struct node*)malloc(sizeof(struct node));
		temp->value = d;
		temp->next = 0;

		if (head == 0)
		{
			head = temp;
		}
		else
		{
			struct node* cur = head;
			while (cur->next != 0)
			{
				cur = cur->next;
			}
			cur->next = temp;
		}

		_v = _v / 10;
		if (_v == 0)
		{
			break;
		}
	}

	return head;
}

struct node* doWork(struct node* a1, struct node* a2)
{
   /* 이 곳을 완성하시오 */
}

int main(void)
{
       /* 아래 부분은 절대로 손대지 마시오 */
	int a, b, c;
	struct node* s3 = 0;
	scanf("%d %d %d", &a, &b, &c);
	
	s3 = doWork(doMistery(a), doMistery(b));
	printf("%d", s3->next->value);

	return 0;
}

입력

출력

도움말

출처

[제출][채점 상황 열람]