자료구조 - 원형 링크드 리스트
2. list init
void init_node(list *lptr)
{
lptr->head = NULL;
lptr->tail = NULL;
lptr->count = 0;
}
3. add node
void add_node(list *lptr, int _value)
{
node * new_node = (node*)malloc(sizeof(node));
new_node->value = _value;
if(lptr->head ==NULL && lptr->tail == NULL) -> 최초 node 추가시
{
new_node->next = new_node;
lptr->head = new_node;
}
else
{
new_node->next = lptr->head;
lptr->tail->next = new_node;
}
lptr->tail = new_node;
lptr->count++;
}
4. delete node
void delete_node(list *lptr)
{
nptr tmp = lptr->head;
nptr remove;
if(lptr->count <= 0) -> 추가 보다 삭제가 더 많을 경우
{
printf("error : out of range\n");
return;
}
else if(lptr->count == 1) -> 노드가 하나일 경우 head, tail 모두 null 초기화
{
lptr->tail = NULL;
lptr->head = NULL;
lptr->count--;
}
else
{
while(tmp->next != lptr->tail)
{
tmp = tmp->next;
}
remove = lptr->tail;
tmp->next = lptr->head;
lptr->tail = tmp;
free(remove);
lptr->count--;
}
}
'Computer Science > Data Structure' 카테고리의 다른 글
자료구조 - 큐 (0) | 2018.03.21 |
---|---|
자료구조 - 스택 (0) | 2018.03.21 |
자료구조 - 원형 이중 링크드 리스트 (1) | 2018.03.20 |
자료구조 - 이중 링크드 리스트 (0) | 2018.03.14 |
자료구조 - 단순 연결 리스트 (0) | 2018.03.12 |