입출력관련 질문입니다. 큐 링크드리스트에서
던컨
include stdio.h
#include stdlib.h
typedef struct _dnode
{
int key;
struct _dnode *prev;
struct _dnode *next;
} dnode;
dnode *head, *tail;
////////////////////////////////////////////////////////////////////////// 큐의 초기화
void init_queue(void)
{
head = (dnode*)malloc(sizeof(dnode));
tail = (dnode*)malloc(sizeof(dnode));
head-prev = head;
head-next = tail;
tail-prev = head;
tail-next = tail;
}
////////////////////////////////////////////////////////////////////////// 큐의 모든 내용 삭제
void clear_queue(void)
{
dnode *t;
dnode *s;
t = head-next;
while( t != tail)
{
s = t;
t = t-next;
free(s);
}
head-next =tail;
tail-prev =head;
}
//Put
// k의 값을 가지는 노드를 만들어 꼬리 앞에 삽입
int put(int k)
{
dnode *t;
if ((t = (dnode*)malloc(sizeof(dnode))) == NULL)
{
printf(\n Out of memory.);
return -1;
}
t-key = k;
tail-prev-next = t;
t-prev = tail-prev;
tail-prev = t;
t-next = tail;
return k;
}
////////////////////////////////////////////////////////////////////////// Get
// 머리 다음 노드를 삭제하면서 노드의 값을 리턴
int get(void)
{
dnode *t;
int i;
t = head-next; // 머리 다음 노드
if (t == tail) // 큐가 비었는지 확인
{
printf(\n Queue underflow.);
return -1;
}
i = t-key;
head-next = t-next;
t-next-prev = head;
free(t);
return i;
}
////////////////////////////////////////////////////////////////////////// 큐의 내용 출력
void print_queue(void)
{
dnode *t;
t = head-next;
printf(\n Queue contents : Front ---- Rear\n);
while (t != tail)
{
printf(%-6d, t-key);
t = t-next;
}
}
////////////////////////////////////////////////////////////////////////// main
void main (void)
{
int i;
init_queue();
while(1){
printf(number input);
/
switch(num){
case 1:
printf(number input);
scnaf(%d,&n);
put(n);
break;
}
}
/*printf(number input);
put(5);
put(4);
put(7);
put(8);
put(2);
put(1);
print_queue();
printf(\nGet);
i = get();
print_queue();
printf(\n getting value is %d, i);
printf(\nPut 3, 2, 5, 7);
put(3);
put(2);
put(5);
put(7);
print_queue();
printf(\nNow queue is full, put 3);
put(3); // 오버플로우 없음
print_queue();
printf(\nInitialize queue);
clear_queue();
print_queue();
printf(\nNow Queue is empty, get);
i = get();
print_queue();
printf(\n getting value is %d, i);
printf(\n\tEnter for EXIT\n);
getchar();*/
}
책에서 이러한 예제를 보았는데요 ..
메인에서 whlie로 무한루프 안에 switch문을 넣어서
메뉴를 만들어서.. 그러니까
1. put
2. get
3. save
4. print
번호 하나를 입력 받아서
위와 같이 구동을 하려고 합니다.
프린트는 알겠는데..
put 데이터를 넣는데서 자꾸 에러가 나네요 ㅜ
그리고.. 파일입출력..save는 어떻게 해야하는 건가요
모드 r/w filename를 받아서 말이죠
1,2,3 힌트 좀 주세요오~ ㅜ
하루종일 삽질중이네요 ㅜㅜ
-
미리별
네 감사합니다 :) 좀 더 자세한 답변을 바랬는데 ㅜ ㅋ 여튼 참고 되었습니다.