#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct linkedlist
{
int number;
struct linkedlist* next;
}linked;
typedef struct node
{
linked* head;
linked* tail;
}node;
void initiallize(node*);
void data_input(node*, int*);
void print_list(node*);
void sum_even_odd(node*, int*);
int main(void)
{
node start;
int evenCOUNT = 0;
initiallize(&start);
int number = 0;
int i = 0;
while (1==1)
{
printf("array[%d] <End-%d> : ", i, 0);
i++;
scanf_s("%d", &number);
if (number % 2 == 0 && number!=0)
{
evenCOUNT++;
}
if (number == 0)
{
break;
}
else
{
data_input(&start, &number);
}
}
print_list(&start);
sum_even_odd(&start, &evenCOUNT);
return 0;
}
void initiallize(node* n)
{
n->head = NULL;
n->tail = NULL;
}
void data_input(node* N, int* D)
{
if (N->head == NULL)
{
N->head = (linked*)malloc(sizeof(linked));
if (N->head == NULL)
{
printf("동적할당 실패!!\n");
return;
}
else
{
memset(N->head, 0, sizeof(linked));
N->head->number = *D;
N->tail = N->head;
}
}
else
{
linked* new_node = (linked*)malloc(sizeof(linked));
if (new_node == NULL)
{
printf("동적할당 실패!!\n");
return;
}
else
{
memset(new_node, 0, sizeof(linked));
N->tail->next = new_node;
new_node->number = *D;
N->tail = new_node;
}
}
}
void print_list(node* N)
{
linked* index = N->head;
while (index != NULL)
{
printf("%d ", index->number);
index = index->next;
}
printf("\n");
}
void sum_even_odd(node* N, int* count)
{
linked* index = N->head;
int sum = 0;
int temp_even = 0;
while (index != NULL)
{
if (index->number % 2 == 0)
{
printf("%d", index->number);
sum = sum + index->number;
temp_even +=1;
if (temp_even < *count &&index != N->tail)
{
printf("+");
}
}
if (index->next == NULL)
{
printf("= %d", sum);
}
index = index->next;
}
printf("\n");
}
#include<stdlib.h>
#include<string.h>
typedef struct linkedlist
{
int number;
struct linkedlist* next;
}linked;
typedef struct node
{
linked* head;
linked* tail;
}node;
void initiallize(node*);
void data_input(node*, int*);
void print_list(node*);
void sum_even_odd(node*, int*);
int main(void)
{
node start;
int evenCOUNT = 0;
initiallize(&start);
int number = 0;
int i = 0;
while (1==1)
{
printf("array[%d] <End-%d> : ", i, 0);
i++;
scanf_s("%d", &number);
if (number % 2 == 0 && number!=0)
{
evenCOUNT++;
}
if (number == 0)
{
break;
}
else
{
data_input(&start, &number);
}
}
print_list(&start);
sum_even_odd(&start, &evenCOUNT);
return 0;
}
void initiallize(node* n)
{
n->head = NULL;
n->tail = NULL;
}
void data_input(node* N, int* D)
{
if (N->head == NULL)
{
N->head = (linked*)malloc(sizeof(linked));
if (N->head == NULL)
{
printf("동적할당 실패!!\n");
return;
}
else
{
memset(N->head, 0, sizeof(linked));
N->head->number = *D;
N->tail = N->head;
}
}
else
{
linked* new_node = (linked*)malloc(sizeof(linked));
if (new_node == NULL)
{
printf("동적할당 실패!!\n");
return;
}
else
{
memset(new_node, 0, sizeof(linked));
N->tail->next = new_node;
new_node->number = *D;
N->tail = new_node;
}
}
}
void print_list(node* N)
{
linked* index = N->head;
while (index != NULL)
{
printf("%d ", index->number);
index = index->next;
}
printf("\n");
}
void sum_even_odd(node* N, int* count)
{
linked* index = N->head;
int sum = 0;
int temp_even = 0;
while (index != NULL)
{
if (index->number % 2 == 0)
{
printf("%d", index->number);
sum = sum + index->number;
temp_even +=1;
if (temp_even < *count &&index != N->tail)
{
printf("+");
}
}
if (index->next == NULL)
{
printf("= %d", sum);
}
index = index->next;
}
printf("\n");
}
'언어' 카테고리의 다른 글
c언어 행렬 곱 and 더하기 (0) | 2016.01.10 |
---|---|
이거 좀 신기하다 공부해볼것 (0) | 2015.12.06 |
지식인 (0) | 2015.10.03 |
0123456789(별찍기 응용) (0) | 2015.10.03 |
문자 counting (0) | 2015.09.28 |