시다바리
[C 언어] 단일 링크 리스트 본문
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXRANDOM 60
// 링크 리스트 구조체
typedef struct ListNode {
int data;
struct ListNode *link;
} ListNode;
// 사용되는 함수 선언
ListNode *create_node(int data, ListNode *link);
void insert_node(ListNode **phead, ListNode *p, ListNode *new_node);
void display(ListNode *head);
void main() {
int i;
int number;
ListNode *linklist = NULL;
ListNode *p;
randomize();
for(i = 0; i < 10; i++) {
number = rand()%MAXRANDOM;
if(number >= 50) {
break;
}
insert_node(&linklist, NULL, create_node(number, NULL));
display(linklist);
}
}
// 노드 생성 함수
ListNode *create_node(int data, ListNode *link) {
ListNode *new_node;
new_node = (ListNode *)malloc(sizeof(ListNode));
if(new_node == NULL) {
printf("Error");
exit(1);
}
new_node->data = data;
new_node->link = link;
return new_node;
}
// 생성된 노드 삽입 함수
void insert_node(ListNode **phead, ListNode *p, ListNode *new_node) {
if(*phead == NULL) {
new_node->link = NULL;
*phead = new_node;
} else if(p == NULL) {
new_node->link = *phead;
*phead = new_node;
} else {
new_node->link = p->link;
p->link = new_node;
}
}
// 연결된 노드 안의 값 출력 힘수
void display(ListNode *head) {
ListNode *p = head;
while(p != NULL) {
printf("%d -> ", p->data);
p = p->link;
}
printf("NULL \n");
}