독학생이 기본적인거 몇가지 질문드려요,,ㅠㅠ

익명 사용자의 이미지

1.
메모리할당함수 malloc이거 쓰고싶을때

include< malloc.h >
include< stdlib.h >
둘중 하나만 쓰면되나요?
차이는 없는지 궁금해요

2.
책에서요 스택을 배우는데 코딩을 간단히 알려드리자면

typedef struct{

element stack [MAX_STACK_SIZE];
int top;
}stacktyp;
이고 여기서 함수push를하는데
Push함수안에서 s -> stack[++(s->top)]=item이런게 나오는데요 인덱스에 s->top이런게 들어갈수 있나요
저는 숫자만들어가는줄 알았는데..저게 어떤의미인지 알려주세요

3. 원형 큐에서 peek 함수가 책에서 아래처럼있는것 처럼 코딩이 되는데요 여기 return q->queue[(q->front+1) %MAX_QUEUE_SIZE]; 에서 front에 1을 더하는건지 모르겠어요 책이 틀린것같아요 여기서 peek은 그냥 제일 앞에 있는 요소를 반환하는거라고 되어있는데 왜 1을 더할까요

 element peek(Queuetype *q)
{
  if (is _empty(q))
    error("큐가 공백상태입니다");
   return q->queue[(q->front+1) %MAX_QUEUE_SIZE];
 
}

m4170의 이미지

안녕하세요.

1. 메모리할당함수 malloc이거 쓰실때는 stdlib.h를 사용하시면 될 것 같습니다.
(참고위치 : http://www.cplusplus.com/reference/cstdlib/malloc/)

2. s->top은 위에 선언되어 있는데로 int형입니다. 그러므로 사용하실 수 있습니다.

typedef struct{
    element stack [MAX_STACK_SIZE];
    int top; //선언되어 있는 원형을 보세요.(int)
} stacktyp;