#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
typedef struct Book
{
struct Book *before_node;
int book_num;
struct Book *after_node;
}Book;
Book * create(int Data)
{
Book * b_node = NULL;
b_node = (Book *)malloc(sizeof(*b_node));
b_node->book_num = Data;
b_node->before_node = NULL;
b_node->after_node = NULL;
return b_node;
}
int Add(Book ** Head, Book * Node)
{
if(*Head == NULL) *Head = Node;
else
{
Book * H_node = *Head;
for(;H_node->after_node != NULL; H_node = H_node->after_node);
H_node->after_node = Node;
Node->before_node = H_node;
}
}
연결리스트의 팁은 항상 Head는 변하면 안된다 그럼으로 항상 Head를 인자로 넘겨주고
그 인자값의 주소를 새로운 구도체를 선언해서 받은뒤 그 구도체 변수를 이용해서 사용한다!!!
정말 중요한 팁이다 !!!
이 소스는 이중 연결 리스트 의 생성과 연결하는 부분이다. 삽입을 한다면 head값을넘겨주고
그 값이 NULL이 아닐때 까지 돌리고 그 after의 주소를 새로 삽입할 주소를 넘겨주고
새로운 삽입할 주소의 before값에 기존의 주소를 넣어주자 그러면 연결 끝!!!
'Soft Ware > 자료구조 및 알고리즘' 카테고리의 다른 글
정렬 !! -선택정렬- (0) | 2012.04.16 |
---|---|
유클리드 호제법을 이용한 최대공약수 구하기 (0) | 2012.04.16 |
중위 순위를 후위순위로 바꾸는 소스입니다 (0) | 2012.04.15 |
동적할당과 스택 구조를 이용하여 후위 연산해보기!! (0) | 2012.04.15 |
원형 리스트 !!! (0) | 2011.08.09 |