원형 큐와 스택에서의 문제해결
옆집언니야
자료구조 진짜 잘하고 싶습니다.
원형 큐에서 저장되어 있는 원소의 수가 가장 작은 큐를 선택하는 프로그램.질문 내용 :
#define max_queue_size 100
#define max_queus 4
typedef struct{
int que[max_queue_size]
int front, rear;
}cirque;
cirque[max_queuse];
cirque find_min_q(cirque q[], int n) /// int n이 뭘 의미하지는 모르겠습니다.
{
int t_min, q_min=max_queue_size;
int q_id=-1; // 현재 큐의 순서
for (int i=0; in ; i++)//각각의 큐의 크기(t_min)계산
{
if(q[i].rear=q[i].front)
t_min=q[i].rear-q[i].front;
else
t_min=max_queue_size -(q[i].front-q[i].rear]); ----------이게 나온 이유좀.
if(t_min q_min){
q_min=t_min;
q_id=i; ---------외 q_id가 의미하는게 i번째인지 설명좀.
}
}
return q[q_id]; ---왜 q[q_id]가 반환이 되는지?
}
이중 연결 원형 리스트의 자료구조이다.
typedef struct node *np;
typedef struct node{
np left;
element item;
np right;
}
void dd(np header, np node){ //인자를 왜 np형을 줬는지?
if(header == node)
printf(deletion of header node not permitte4d\n);
else{
node-left-right=node-right; //노드 타고 들어가는게node-left-right가왜 쓰는지 모르겠음.
node-right-left=node-left;
free(node);
}
}
-
누리알찬
이중 링크드 리스트..... np형은 typedef 되어 결국 자기 자신을 가리키는 node의 포인터형이겠군요..
포인터에 대한 이해도도 많이 부족하신거 같네요.. 포인터 부분부터 다시 공부하시는게 좋을듯..
포인터란 계념도 힘든데 자기자신을 가르킨다 이게 먼말인가 했던때가 저도 있었습니다. 지금도 포인터는 어려운 존재지만요.. -
도란도란
무작정 소스를 보고 분석하시려고 하지마시고 큐에 대한 내용을 이해하시는게 좋아요.. 제가 보기엔 기본적으로 돌아가는 원리 조차 파악 못하시는듯합니다. 일단 원리를 떠나서 자료구조를 잘하시고 싶으시면 책에 큐가 나온배경과 어떨때 유용하게 쓰이는지 알면 자연스레 원리가 조금씩 보이기 시작합니다. 그리고 나서 알고리즘적인 부분의 해설을 책내용을 자세히 그림을 그려가면서 이해하시고 그때 코드를 손수 짜보시는걸 권장합니다.
for 문안에 if문 구절에 질문