안녕하세요 제가 속한 코치님의 질문 게시판에도 올린 내용이지만
한 코치님의 답변을 기다리기보단 여러 다른 코치님들의 답변을 볼 수 있을것 같아 질문올립니다.
(코치님이 아니라 아시는 분이 답변을 주셔도 좋을 것 같습니다.)
1. 미션 2의 코드에서 main의 내부를 보면 처음 root를 아래와 같이 생성하는데
StackNode* root = NULL;
이후에 push, pop, peek 함수의 인자로 root가 아닌 &root를 전달한 이유가 궁금합니다.
2. 위 질문에 이어서
샘플미션에서는 listA를 인자로 전달해서, append함수에서 temp=l 로 temp->data 등 l의 data에 접근했는데(*l 이나 *temp가 아니라요) 왜 이와 다르게 &root를 전달했는지 모르겠습니다.
때문에 각 함수에서 매개변수로 StackNode** root를 받는데, 이 때 root, *root, **root가 각각 무엇인지 혼란이 오네요.
한가지 예를 들자면 push 함수 내에서 root에 아무런 값이 없으면 node를 생성해 root에 할당하는 아래의 코드를 작성했는데,
*root = createStackNode(data); //createStackNode는 node를 반환하므로 *root=node라고도 표현할수 있을것 같아요
아래의 코드는 어떤 차이때문에 오류가 발생하는지 모르겠습니다.
root=createStackNode(data);
3. 또 pop과 peek 함수 에서 가장 먼저 stack이 비어있는지 확인하기 위해 아래의 코드를 사용합니다.
isEmpty(*root)
이때는 왜 push, pop, peek 함수와 달리 *root를 인자로 전달하는지?
&root나 root를 전달해 매개변수로 StackNode** root를 받지 않는지?
(차이를 모르는 입장에서 일관적이지 않다고 느껴지는데 어떤 차이 때문에 다르게 작성되었는지?)
isEmpty는 아래의 코드와 같이 !root를 반환하는데 !*root와 차이가 어떻게 되는지? 궁금합니다.
int isEmpty(StackNode* root) { return !root; }
4. 미션 3에서 createQueue 함수의 내용을 보면 아래의 내용이 있는데,
queue->array = (int *)malloc(sizeof(int)*queue->capacity);
queue->array 와 *queue->capacity 는 각각 다른 값에 접근하지만(array와 capacity)
동일한 queue 내부의 값으로 접근하는데, queue-> 와 *queue->의 차이가 무엇인가요?
미션으로 주어진 코드를 이해하는데도 오래걸려서, 미션 4번은 아직 살펴보지 못해 질문내용이 없네요 추가질문 있으면 글 남기겠습니다. 감사합니다.
comment