짝수만 합하자

언어2015. 10. 10. 20:06
#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");
}

 

 

'언어' 카테고리의 다른 글

c언어 행렬 곱 and 더하기  (0) 2016.01.10
이거 좀 신기하다 공부해볼것  (0) 2015.12.06
지식인  (0) 2015.10.03
0123456789(별찍기 응용)  (0) 2015.10.03
문자 counting  (0) 2015.09.28