티스토리 뷰

C/자료구조

원형 리스트

NationCore 2019. 3. 13. 16:25

#include <stdio.h>

#include <stdlib.h>



typedef struct {

int data;

struct ListNode *link;

} ListNode;



void insert_first(ListNode **head, ListNode *node)

{

if (*head == NULL)

{

*head = node; // 헤드는노드

node->link = node; // 노드의 다음 주소는 노드

}

else {

node->link = (*head)->link; // 노드의 다음주소는 헤드의 주소

(*head)->link = node; // 헤드의 다음주소는 노드

}

}


void insert_last(ListNode **head, ListNode *node)

{

if (*head == NULL)

{

*head = node; //헤드의 주소는 노드

node->link = node; //노드의 다음주소는 노드

}

else {

node->link = (*head)->link; // 노드의 다음 주소는 헤드

(*head)->link = node; // 헤드의 다음주소는 노드

*head = node; // 헤드의 주소는 노드

}

}


void error(char *mes)

{

fprintf(stderr, "%s\n", mes);

exit(1);

}


ListNode *creat_node(int data, ListNode *link)

{

ListNode *new_node;

new_node = (ListNode *)malloc(sizeof(ListNode));

if (new_node == NULL) error("메모리 할당 에러");

new_node->data = data;

new_node->link = link;

return(new_node);

}


void display(ListNode *head)

{

ListNode *p;

if (head == NULL) return;

p = head;

do

{

printf("%d ->", p->data);

p = p->link;

} while (p != head);

}


void main(void)

{

ListNode *list1 = NULL;


insert_first(&list1, creat_node(10, NULL));

insert_first(&list1, creat_node(20, NULL));

insert_last(&list1, creat_node(30, NULL));


display(list1);

}



결과 :


'C > 자료구조' 카테고리의 다른 글

주소 포인터를 이용한 다항식 계산  (0) 2019.03.18
이중 연결 리스트  (0) 2019.03.13
자체 참조 구조체를 이용한 동적 리스트  (0) 2019.03.13
배열을 이용한 리스트  (0) 2019.03.13
자체 참조 구조체  (0) 2019.03.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함