concate.c
#include <stdio.h> #include <stdlib.h> #define Max1 10 #define Max2 6 struct List { int Number; struct List *Next; }; typedef struct List Node; typedef Node *Link; int Data1[Max1] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int Data2[Max2] = { 11, 12, 13 , 14, 15, 16 }; Link Concatenate_List(Link Head1, Link Head2) { Link Pointer; Link Back; Link Next; Pointer = Head1; while(Pointer->Next != NULL) Pointer = Pointer->Next; Pointer->Next = Head2; return Head1; } void Print_List(Link Head) { Link Pointer; Pointer = Head; while(Pointer != NULL) { printf("[%d]", Pointer->Number); Pointer = Pointer->Next; } printf("\n"); } void Free_List(Link Head) { Link Pointer; while(Head != NULL) { Pointer = Head; Head = Head->Next; free(Pointer); } } Link Create_List(Link Head, int *Data, int Max) { Link New; Link Pointer; int i; Head = (Link)malloc(sizeof(Node)); if (Head == NULL) printf("Memory allocate Failure!!\n"); else { Head->Number = Data[0]; Head->Next = NULL; Pointer = Head; for(i = 1; i < Max; i++) { New = (Link)malloc(sizeof(Node)); New->Number = Data[i]; New->Next = NULL; Pointer->Next = New; Pointer = New; } } return Head; } void main() { Link Head; Link Head1; Link Head2; Head1 = Create_List(Head1, Data1, Max1); Head2 = Create_List(Head2, Data2, Max2); if(Head1 != NULL && Head2 != NULL) { printf("Input Data : \n"); Print_List(Head1); Print_List(Head2); Head = Concatenate_List(Head1, Head2); printf("After Concatenate : \n"); Print_List(Head); Free_List(Head); } }