헤드 노드 생성
#include <stdio.h>
typedef struct listnode {
int data;
struct listnode* link;
}ListNode;
typedef struct {
ListNode* head;
}HeadNode;
HeadNode* createHead()
{
HeadNode* h = (HeadNode*)malloc(sizeof(HeadNode));
if (h != NULL) h->head = NULL;
return h;
}
ListNode* createNode(HeadNode* phead, int data)
{
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode == NULL)
{
printf("메모리 할당 실패!!");
return NULL;
}
else
{
newNode->data = data;
newNode->link = NULL;
return newNode;
}
}
리스트 노드 생성
ListNode* createNode(HeadNode* phead, int data)
{
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode == NULL)
{
printf("메모리 할당 실패!!");
return NULL;
}
else
{
newNode->data = data;
newNode->link = NULL;
return newNode;
}
}
노드 삽입 함수
void insertFirstNode(HeadNode* phead, ListNode* newNode)
{
if (phead->head == NULL)
{
phead->head = newNode;
newNode->link = newNode;
}
else
{
newNode->link = phead->head->link;
phead->head->link = newNode;
}
}
마지막에 노드 삽입
void insertLastNode(HeadNode* phead, ListNode* newNode)
{
if (phead->head == NULL)
{
phead->head = newNode;
newNode->link = newNode;
}
else
{
newNode->link = phead->head->link;
phead->head->link = newNode;
phead->head = newNode;
}
}
전체 노드 출력
/* 전체 노드 출력 */
void printNode(HeadNode* h)
{
int i = 1;
ListNode* curr = h->head;
do {
printf("%d번째 노드 값 : %d\n", i++, curr->data);
curr = curr->link;
} while (curr != h->head);
}
함수 호출
int main()
{
HeadNode* h = createHead(); // 출력 순서
insertFirstNode(h, createNode(h,6)); // 2
insertLastNode(h, createNode(h, 9)); // 3
insertLastNode(h, createNode(h, 12)); // 4
insertLastNode(h, createNode(h, 3)); // 1
printNode(h);
return 0;
}
'자료구조 > C_자료구조' 카테고리의 다른 글
C_자료구조 & 알고리즘. 양방향(이중)연결리스트 (0) | 2021.05.17 |
---|---|
C_자료구조 & 알고리즘. 단방향 리스트 (0) | 2021.05.14 |