728x90
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node* next;
}NODE;
//전달받은 데이터를 저장하는 하나의 노드를 생성하는 함수
NODE* createNode(int data)
{
NODE *temp = (NODE*)malloc(sizeof(NODE));
temp->next = NULL;
temp->data = data;
return temp;
}
//현재 리스트의 맨 뒤에 노드를 추가해주는 함수
void addNode(NODE **head, int data)
{
// 전달받은 값을 저장하는 새로운 노드를 생성한다.
NODE *newNode = createNode(data);
// 헤드에 아무것도 없을 경우
// 즉, 현재 노드가 하나도 없을 경우
if(*head == NULL)
{
// 헤드에 생성한 노드를 연결
*head = newNode;
}
else
{
NODE *temp = *head;
// 마지막 노드를 찾는 루프
while(temp->next != NULL)
{
temp = temp->next;
}
// 마지막 노드일 경우 새로 생성한 노드 연결
temp->next = newNode;
}
}
int main(void)
{
// 리스트의 가장 처음 노드를 가르키는 포인터
NODE *head = NULL;
// 맨 뒤에 데이터 '10'을 가진 노드를 추가
addNode(&head, 10);
// 맨 뒤에 데이터 '20'을 가진 노드를 추가
addNode(&head, 20);
// 맨 뒤에 데이터 '30'을 가진 노드를 추가
addNode(&head, 30);
NODE * curr = head;
while(curr != NULL){
printf("%d\n",curr->data);
curr = curr->next;
}
curr = head -> next;
while(curr != NULL){
free(curr);
curr = curr->next;
}
return 0;
}
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node* next;
}NODE;
//전달받은 데이터를 저장하는 하나의 노드를 생성하는 함수
NODE* createNode(int data)
{
NODE *temp = (NODE*)malloc(sizeof(NODE));
temp->next = NULL;
temp->data = data;
return temp;
}
//현재 리스트의 맨 뒤에 노드를 추가해주는 함수
void addNode(NODE **head, int data)
{
// 전달받은 값을 저장하는 새로운 노드를 생성한다.
NODE *newNode = createNode(data);
// 헤드에 아무것도 없을 경우
// 즉, 현재 노드가 하나도 없을 경우
if(*head == NULL)
{
// 헤드에 생성한 노드를 연결
*head = newNode;
}
else
{
NODE *temp = *head;
// 마지막 노드를 찾는 루프
while(temp->next != NULL)
{
temp = temp->next;
}
// 마지막 노드일 경우 새로 생성한 노드 연결
temp->next = newNode;
}
}
int main(void)
{
// 리스트의 가장 처음 노드를 가르키는 포인터
NODE *head = NULL;
// 맨 뒤에 데이터 '10'을 가진 노드를 추가
addNode(&head, 10);
// 맨 뒤에 데이터 '20'을 가진 노드를 추가
addNode(&head, 20);
// 맨 뒤에 데이터 '30'을 가진 노드를 추가
addNode(&head, 30);
NODE * curr = head;
while(curr != NULL){
printf("%d\n",curr->data);
curr = curr->next;
}
curr = head -> next;
while(curr != NULL){
free(curr);
curr = curr->next;
}
return 0;
}
|
cs |
728x90
'자료구조' 카테고리의 다른 글
[자료구조] 이중 연결리스트 (double linked list) 요약 (0) | 2020.12.03 |
---|---|
[자료구조] C 단일연결리스트 예제) 학생정보리스트 노드입력, 노드삭제,노드검색,노드출력 (0) | 2020.12.03 |
[자료구조 기초] 연결리스트2 노드추가함수 코드 (0) | 2020.11.27 |
[자료구조 기초] C언어 스택(Stack) 개념 , 구현 , 소스코드 (0) | 2020.11.26 |
[ 자료구조 기초] 자료구조의 기초 선형 구조와 수식 계산 (0) | 2020.11.26 |