[완료] 개발중 질문있습니다
글쓴이: sacredone / 작성시간: 화, 2012/07/24 - 10:53오전
typedef struct Stack{ char stack[STACK_SIZE]; int top; }Stack; void push(Stack* s, char c) { if(s->top == 100){ printf("stack is full\n"); exit(1); } s->top++; s->stack[s->top] = c; }
이러한 스택 구조체와 푸시 함수를 구현했는데
구현할때는 char 형에 대한 처리만 하면됬어서 저렇게 만들었다가
완전히 동일한 기능을 하지만 double 형인 기능이 필요합니다
그렇다고
typedef struct Stack_d{ double stack[STACK_SIZE]; int top; }Stack_d; void push(Stack* s, double d) { if(s->top == 100){ printf("stack is full\n"); exit(1); } s->top++; s->stack[s->top] = d; }
이렇게 또 선언하기는 싫고말이죠 ㅠ
어떻게 방법이 없을까요
Forums:
C++이면 템플릿을 쓰면 될 것 같고 그냥
C++이면 템플릿을 쓰면 될 것 같고 그냥 C라면... push의 선언이 겹쳐서 저대로 쓰면 안되겠죠.
c나 d를 void로 쓰고 넣을때랑 꺼낼때 캐스팅하는 방법이 생각나네요. 맞는지는 모르겠습니다..
피할 수 있을때 즐겨라! http://melotopia.net/b
공용체 union으로 하면 어느정도 커버될듯합니다.
union StackType {
char ch;
double db;
};
typedef struct Stack {
StackType stack[STACK_SIZE];
int top;
}Stack;
void push(Stack* s, StackType t)
{
if(s->top == 100){
printf("stack is full\n");
exit(1);
}
s->top++;
s->stack[s->top] = t;
}
char쓸때는 t.ch를 사용. double일때는 t.db를 사용하면 됩니다.
C++로 한다면 템플릿으로 간단하게..
답변해주신 모든분 감사합니다
답변해주신 모든분 감사합니다
댓글 달기