1. 배열을 이용한 리스트
#include <stdio.h>
int main() {
int arr[10];
int n, index = 0;
//입력
while (index<10) {
printf("자연수 입력 : ");
scanf("%d", &n);
arr[index++] = n;
}
//출력
for (int i = 0; i < index; i++) {
printf("%d ", arr[i]);
}
return 0;
}
2. 포인터를 이용한 리스트 = Linked List
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node* next;
}Node;
int main() {
Node* head = NULL; //배열 시작
Node* tail = NULL; //배열 끝
Node *current = NULL; //현재 위치
//입력 = 새로운 노드 연결
Node* newNode = NULL;
int n;
while (1) {
printf("자연수 입력 : ");
scanf("%d", &n);
if (n < 1)
break;
newNode = (Node*)malloc(sizeof(Node));
newNode->data = n;
newNode->next = NULL;
if (head == NULL)
head = newNode;
else
tail->next = newNode;
tail = newNode;
}
printf("\n");
//출력
if (head == NULL)
printf("list에 데이터가 없습니다.");
else {
current = head;
printf("%d ", current->data);
while (current->next != NULL) {
current = current->next;
printf("%d ", current->data);
}
}
printf("\n\n");
//메모리 해제
if (head == NULL)
return 0;
else {
Node* delNode = head;
Node* delNextNode = head->next;
free(delNode);
while (delNextNode != NULL) {
delNode = delNextNode;
delNextNode = delNextNode->next;
free(delNode);
}
}
return 0;
}
'CS > 자료구조' 카테고리의 다른 글
정렬(Sorting) (0) | 2021.07.13 |
---|---|
우선순위 큐(Priority Queue) (0) | 2021.07.11 |
트리(Tree) (0) | 2021.07.11 |
스택(Stack) & 큐(Queue) (0) | 2021.07.10 |
재귀함수 (0) | 2021.07.08 |