push_swap - 구조 구상하기

숌 개발 공부 블로그·2021년 5월 15일
0

push_swap

목록 보기
2/2

스택

스택이 없는 C로 스택(스택이 아닌거같지만)을 구현해야 했고,
또한 각각 명령어에 따른 기능들을 구현해야 했다.

일반적인 stack이랑은 구조가 다르겠다고 생각했는데
이를 위해서는 정리가 조금 필요하다고 생각되어
뭔가 특이점이 온 stack 의 구조를 정리해보았다.


구현해야할 (유사)스택의 구조

  • 프로그램을 실행시킬 때 받는 첫 인자가 스택의 top 부분이라고 했기 때문에 스택의 특징과 별개로 인자를 순서대로 넣기 위해서는 아래로 노드 추가가 되어야 하기때문에 push_front를 생각했다.
  • 또한 한 칸씩 올라가거나, 내려가야하기 때문에 그에 맞는 양방향 링크드리스트로 구성했다.

구조체

구조체는 크게 전체 정보를 들고다닐 t_info와 스택의 정보를 담을 t_stack, 그리고 스택을 연결할 t_node(링크드리스트)를 우선 만들게 되었다.
각각의 변수들은 필요할 때마다 추가할 생각이다.

typedef struct	s_node
{
	int		num;
	struct s_node	*prev;
	struct s_node	*next;
}		t_node;

typedef struct	s_stack
{
	t_node		*top;
	t_node		*bottom;
	int		size;
}		t_stack;

typedef struct	s_info
{
	t_stack		*a;
	t_stack		*b;
	int		size;
	int		count;
}		t_info;

0개의 댓글