2017. 4. 5. 17:19ㆍC Algorithm
< 단일 링크드 리스트 >
#include<stdio.h>
#include<stdlib.h>
typedef struct _Node { // 구조체선언
char Data;
struct _Node *Next
} Node;
Node *head , *end , *temp;
Node *temp1 , *temp2 , *temp3 , *temp4 ;
void Initialize(void){ // 단일 링크드 리스트 생성함수
Node *p ;
head = (Node*)malloc(sizeof(Node));
end = (Node*)malloc(sizeof(Node));
temp1 = (Node*)malloc(sizeof(Node));
temp1->Data = 'A';
head->Next = temp1;
temp1->Next = end;
end->Next = end;
p = temp1;
temp2 = (Node*)malloc(sizeof(Node));
temp2->Data = 'B';
p->next = temp2;
temp2->Next = end;
p = temp2;
temp3 = (Node*)malloc(sizeof(Node));
temp3->Data = 'D';
p->Next = temp3;
temp3->Next = end;
p = temp3;
temp4 = (Node*)malloc(sizeof(Node));
temp4->Data = 'E';
p->Next = temp4;
temp4->Next = end;
p = temp4;
}
=> temp1 -> temp2 -> temp3 -> temp4
void InsertNode( Node *p ){ // 노드 삽입 함수
Node *indexP;
for( indexP = head ; indexP != end ; indexP = indexP->Next ){ // 노드가 들어갈 위치를 찾는다
if( ( indexP->Next->Data ) > ( p->Data ) ){ // head->Next == temp1
break;
}
p->Next = indexP->Next ; // 노드가 가리킬 노드 지정
indexP->Next = p->Next ; // 추가된 노드를 가리키게 만듬
}
}
....
int main( void ){
Node *ptr; // 구조체포인터
int i = 0 ;
Initialize(); // 단일링크드생성
ptr = head->Next; // ptr = temp1
for ( i=0 ; i<4 ;i++){
printf("%2c" , ptr->Data );
ptr = ptr->Next ;
} => " A B D E " 출력
temp = (Node*)malloc(sizeof(Node));
temp->data = 'C';
InsertNode( temp );
ptr = head->Next ;
for ( i=0 ; i<5 ;i++){
printf("%2c" , ptr->Data );
ptr = ptr->Next ;
} => " A B C D E " 출력
return 0;
}
'C Algorithm' 카테고리의 다른 글
Queue Put / Get (0) | 2017.04.07 |
---|---|
스택 ( Stack push함수 , Stack pop함수 ) (0) | 2017.04.06 |
삽입정렬(InsertSort) & 버블정렬(BubbleSort) (0) | 2017.03.27 |
Fibonacci & Dynamic Programming( 피보나치수열 & 동적계획법) (0) | 2017.03.25 |
BinarySearch ( 이진검색 ) (0) | 2017.03.25 |