linkedlist_a + linkedlist_b
//작성자: 김준현
//작성일: 2015 08
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef int DATA;
typedef struct linkedList
{
DATA element;
struct linkedList* connect;
}linkedList;
typedef struct
{
linkedList* head;
linkedList* tail;
DATA nNodeCnt;
}link;
void initiallize_linkedList(link*);//초기화
void linkedList_Data_Input(link*, const int);//데이터 삽입
void linkedList_Data_Printf(link*);
void merge(link*, link*,link*);//link1, link2, link1+2
int main(void)
{
link linkedlist_1;
link linkedlist_2;
link linkedlist_1_sum_linkedlist_2;
//linkedlist_1 과 linkedlist_2 초기화
initiallize_linkedList(&linkedlist_1);
initiallize_linkedList(&linkedlist_2);
initiallize_linkedList(&linkedlist_1_sum_linkedlist_2);
//linkedlist_1 과 linkedlist_2 데이터 삽입
//LINKEDLIST_1
linkedList_Data_Input(&linkedlist_1, 10);
linkedList_Data_Input(&linkedlist_1, 0);
linkedList_Data_Input(&linkedlist_1, 8);
linkedList_Data_Input(&linkedlist_1, 2);
linkedList_Data_Input(&linkedlist_1, 1);
linkedList_Data_Input(&linkedlist_1, 111);
linkedList_Data_Input(&linkedlist_1, 12);
linkedList_Data_Input(&linkedlist_1, 3);
linkedList_Data_Input(&linkedlist_1, 5);
linkedList_Data_Input(&linkedlist_1, 77);
printf("linkedlist_1: ");
linkedList_Data_Printf(&linkedlist_1);
//LINKEDLIST_2
linkedList_Data_Input(&linkedlist_2, 22);
linkedList_Data_Input(&linkedlist_2, 13);
linkedList_Data_Input(&linkedlist_2, 1114);
linkedList_Data_Input(&linkedlist_2, 212);
linkedList_Data_Input(&linkedlist_2, 30);
printf("linkedlist_2: ");
linkedList_Data_Printf(&linkedlist_2);
merge(&linkedlist_1, &linkedlist_2, &linkedlist_1_sum_linkedlist_2);
printf("linkedlist_1 + linkedlist_2: ");
linkedList_Data_Printf(&linkedlist_1_sum_linkedlist_2);
return 0;
}
void initiallize_linkedList(link* L)
{
L->head = (linkedList*)malloc(sizeof(linkedList));
memset(L->head, 0, sizeof(linkedList));
L->tail = L->head;
L->nNodeCnt = 0;//데이터 갯수 초기화
}
void linkedList_Data_Input(link* L, const int DATA)
{
linkedList* new_node = (linkedList*)malloc(sizeof(linkedList));
if (new_node == NULL)
{
printf("동적할당 실패!!\n");
return;//종료
}
else//(new_node != NULL)
{
memset(new_node, 0, sizeof(linkedList));
if (L->head->connect == NULL)
{
L->nNodeCnt++; // 데이터 갯수 +1
new_node->element = DATA;
L->tail->connect = new_node;// L->tail-------new_node
L->tail = new_node;
L->tail->connect = NULL;
}
else
{
linkedList* temp_index = L->head;
int temp_count = 0;
while (temp_count != L->nNodeCnt)
{
temp_index = temp_index->connect;
temp_count++;
}
temp_index->connect = new_node;
L->nNodeCnt++;// 데이터 갯수 +1
new_node->element = DATA;
L->tail = new_node;
L->tail->connect = NULL;
}
}
}
void linkedList_Data_Printf(link* L)
{
linkedList* index_ = L->head->connect;
while (index_ != NULL)
{
printf("%d ", index_->element);
index_ = index_->connect;
}
printf("\n");
}
void merge(link* L1, link* L2, link* L12)
{
int total_size = 0;
total_size = L1->nNodeCnt + L2->nNodeCnt;
DATA* array_temp = (DATA*)malloc(sizeof(DATA)* (L1->nNodeCnt + L2->nNodeCnt));
memset(array_temp, 0, sizeof(DATA)* total_size);
int j = 0;//index
int i = 0;
int temp_exchange = 0;
int result = 0;
L1->tail->connect = L2->head->connect;
L12->head = L1->head;
L12->tail = L2->tail;
L12->nNodeCnt = total_size;
linkedList* index_temp = L12->head->connect;
while (index_temp != NULL)
{
array_temp[i] = index_temp->element;
i++;
index_temp = index_temp->connect;
}
/*
printf("test----print---------------\n");
for (i = 0; i < L12->nNodeCnt; i++)
{
printf("%d ", array_temp[i]);
}
*/
printf("\n");
//bubble sort
for (i = 0; i < L12->nNodeCnt - 1; i++)
{
result = 0;
for (j = 0; j < L12->nNodeCnt - 1; j++)
{
if (array_temp[j]>array_temp[j + 1])
{
temp_exchange = array_temp[j];
array_temp[j] = array_temp[j + 1];
array_temp[j + 1] = temp_exchange;
result = 1;
}
}
if (result == 0)
{
break;
}
}
index_temp = L12->head->connect;
i = 0;
while (index_temp != NULL)
{
index_temp->element = array_temp[i];
i++;
index_temp = index_temp->connect;
}
}
'언어' 카테고리의 다른 글
naver 지식인 - 1 (2015/ 08/ 30) (0) | 2015.08.30 |
---|---|
2015_08_27 (0) | 2015.08.27 |
swap (0) | 2015.08.27 |
linkedlist _ 오름차순 정렬 (0) | 2015.08.25 |
LOTTO_VER2 (0) | 2015.08.24 |