Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

시다바리

[C 언어] 단일 링크 리스트 본문

Language/C

[C 언어] 단일 링크 리스트

호서아빠 2008. 9. 8. 11:09

#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");
}

Comments