본문 바로가기

Stack

(3)
새로운 노드의 left와 right | left and right for a new node `get_new_node` 함수에서 `node->left`와 `node->right`를 NULL로 설정하는 이유는 다음과 같습니다:1. 안전한 초기화:   - 포인터를 NULL로 설정하는 것은 C 프로그래밍에서 안전한 관행입니다.   - 이는 이 포인터들이 무작위 메모리 주소를 포함하지 않도록 보장하며, 실수로 역참조될 경우 발생할 수 있는 정의되지 않은 동작을 방지합니다.2. 연결 없음 표시:   - NULL 포인터는 새 노드가 아직 다른 노드와 연결되지 않았음을 명확히 나타냅니다.   - 이는 각 노드가 양쪽에 연결을 가질 수 있는 이중 연결 리스트 구조에서 특히 중요합니다.3. 오류 방지:   - 이 포인터들을 초기화하지 않으면 쓰레기 값을 포함할 수 있습니다.   - 초기화되지 않은 포인터를 사용..
bottom을 push하기 | pushing bottom `push_bottom` 함수는 새로운 노드를 스택의 맨 아래에 추가하는 연산을 수행합니다. 이 함수를 상세히 설명하겠습니다:1. 함수 파라미터:   - `t_stack *stack`: 노드를 추가할 스택   - `t_node *new_node`: 스택에 추가할 새 노드2. 지역 변수:   - `t_node *bottom`: 스택의 최하위 노드(더미 노드)를 가리키는 포인터   - `t_node *temp`: 현재 스택의 최하위 데이터 노드를 임시로 저장하는 포인터3. 연산 과정:   bottom = stack->bottom;   - 스택의 최하위 노드(더미 노드)를 `bottom`에 저장합니다.   temp = bottom->left;   - 현재 스택의 최하위 데이터 노드(또는 비어있다면 top 노드..
스택을 위한 구조체 | Struct for Stack 이 세 가지 구조체(s_node, s_stack, t_var)는 정렬 알고리즘을 구현하기 위해 함께 작동하도록 설계하였습니다. t_node 구조체t_node 구조체는 이중 연결 리스트의 단일 노드를 나타냅니다:val: 노드의 정수 값을 저장합니다.left와 right: 각각 이전 노드와 다음 노드를 가리키는 포인터입니다.이 구조체는 리스트의 양방향 순회를 가능하게 하며, 이는 효율적인 스택 연산에 중요합니다. t_stack 구조체t_stack 구조체는 스택을 나타냅니다:top: 스택의 최상위 노드를 가리킵니다.bottom: 스택의 최하위 노드를 가리킵니다.이 구조체는 t_node를 사용하여 스택 데이터 구조를 생성합니다. 스택의 양 끝에 대한 포인터를 유지하여 양쪽 끝에서 효율적인 push와 pop 연산..