take … for granted ①…을 당연한 것이라고[의심할 여지가 없다고] 생각하다
https://cs50.harvard.edu/x/2023/weeks/5/
자료 https://okeybox.tistory.com/176
Queue : 식당 줄 비슷. first in first out FIFO
enqueue : 줄에 입장
dequeue : 순서가 되어서 줄에서 나감
Stack : 쌓아둔 쟁반과 비슷. last in first out LIFO
이메일 데이터랑 비슷.
push : 위에 데이터 쌓음
pop : 위에서 데이터 가져감
const int CAPACITY = 50;
typedef struct
{
person people[CAPACITY]; //stack의 최대 높이
int size; // 현재 높이
}
stack;
Resizing array
// Implements a list of numbers with an array of dynamic size
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
// List of size 3
int *list = malloc(3 * sizeof(int)); //3글자xint의 사이즈(4byte)
if (list == NULL)
{
return 1;
}
// Initialize list of size 3 with numbers
list[0] = 1;
list[1] = 2;
list[2] = 3;
// List of size 4 4칸집 생성
int *tmp = malloc(4 * sizeof(int));
if (tmp == NULL)
{
free(list);
return 1;
}
// Copy list of size 3 into list of size 4 4칸집으로 123 옮김
for (int i = 0; i < 3; i++)
{
tmp[i] = list[i];
}
// Add number to list of size 4 마지막에 4 추가
tmp[3] = 4;
// Free list of size 3 3칸집 반환
free(list);
// Remember list of size 4
list = tmp; //앞에서 포인터로 정의가 되었으므로 포인터임.
// Print list
for (int i = 0; i < 4; i++)
{
printf("%i\n", list[i]);
}
// Free list
free(list);
return 0;
realloc으로 대체 가능
linked list
java, python같은 언어에서는 기본 기능.
typedef struct node
{
int number;
struct node *next; //node 선언
}
node;
linked array 단점 - pointer때문에 용량을 2배이상 잡아먹음. []를 사용해서 값을 특정할 수 없음(연속된 배열에서만 순서로 지정 가능)