inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

홍정모의 따라하며 배우는 C언어 (부록)

17.13 연결 리스트로 큐 구현하기

16:30 질문입니다.

414

TaeChoon Park

작성한 질문수 57

0

안녕하세요

큐의 정의조건에는 "아이템이 한개또는 0개일때는 front와 rear포인터의 값이 같다" (전자는 해당 노드의 주소 후자는 Null)  가 있는데요

강의 16:30 bool DeQue 함수를 보면 교수님의 코드는 

큐가 빌경우 front 와 rear의 값이 Null로 같아지는 경우는 구현했으나 원소가 하나일때 둘이 같아지게 하는 코드가 없는것같습니다.

아래는 조잡하지만 제가 구현한 코드인데요

bool DeQue(Item*item , Queue*pq)

{

if(pq->first==Null)

{ printf("empty₩n"); return false;}

Node*temp=pq->front->next; 

*item=pq->front->item;

free(pq->front);

pq->front=head;

pq->size-=1;

if(pq->front==Null ll

pq->front->next==Null)

{ pq->rear=pq->front;}

return true;

}

마지막 if처럼 둘이서로 같게해주는 코드가 필요하다 보는데 어떻게 생각하시나요?

c

답변 4

1

TaeChoon Park

아 감사합니다!!

1

Hello Yeo

과정을 확인해보세요. 이미 해주고 있기 때문에 필요가 없습니다.

1

TaeChoon Park

안녕하세요.

좋은 말씀 감사드립니다.

말씀 하신대로 교수님의 EnQueue DeQueue 코드를 다시 확인하였으나 ,

EuQueue시에도DeQueue시에도

Queue의 nitems=1 , 즉 Queue의 item이 한개가될때 Queue의 rear 와 front의 값이 그 아이템노드의 주소로 같게해주는 (Queue의 정의조건중하나) 코드가 없는것으로 보입니다. 

그래서 제가 만든 코드를첨부하였구요.

확인부탁드립니다. 감사합니다! 

1

Hello Yeo

안녕하세요? 군생활 중에 열심이시군요. 박수를 보냅니다.
이 경우는 원소가 1개일때(혹은 그 이상도 마찬가지입니다.) Enqueue와 Dequeue를 순차적으로 실행했을 때 각각
head와 rear가 어디를 가리키게 되는지 고민해보시면 좋을 것 같습니다.

DACL 질문

0

16

1

DLL 제작자가 PDB도 같이 제공해야 한다는 설명에 질문

0

23

2

정처기 2026-3 실기 문의

0

59

2

정처기 실기 3회 컴싸 사용 여부

0

38

1

모의고사 1 회 2번문제 중

0

54

2

26-2 이론문제 재탕

1

40

1

이진 탐색: 탐색 실패하는 경우 어째서 first > last인 경우가 나오나요?

0

384

1

17.12) access violation

0

357

1

finditembyindex 질문드립니다!

0

393

1

19:20 부분에서 질문있습니다.

0

322

1

pnode = pnode->next; 와 pnode->next = pnode;는 같은 것으로 생각해도 될까요?

0

451

2

질문. warning뜨는 이유

0

342

1

링크드 리스트 질문 드립니다.

0

239

1

함수포인터 질문드립니다

0

268

1

강의 내용 질문 드립니다!

0

422

2

노드 주소 순서 관련 질문

0

320

1

질문드립니다!

0

276

1

DeleteAllNodes 에서 질문있습니다.

0

473

5

scanf 질문이요!!

0

284

1

12:30 의 ArrayQueue.h

0

338

2

10:10 Add front에서 질문드립니다.

1

391

1

스택 자료구조

0

293

1

변수 count의 활용에 대해 질문이 있습니다.

0

357

1

1번 실행하면 에러가 뜨는데 이유를 모르겠습니다..

0

429

2