동적할당을 통한 구조체스택 플그램....
글쓴이: yul2 / 작성시간: 금, 2005/04/29 - 8:43오후
동적할당을 통한 구조체스택 프로그램인데요... 아무리 봐도 어디가 이상한지 모르겠네요... 고수님들... 도와주세요!!
터보C 에서는 push()한 값 이외에 이상한 값들이 추가로 print 되구요.... 비주얼 C 로 컴파일 하니깐 push()한 값만 찍히고 애러메시지가 찍히네요...
unhandled exception in stack.exe: 0xC0000005: access violation <------ 이런 메시지가 뜨네요...
아... 프로그램의 세계는 심오한듯.... ㅠ.ㅠ;;
#include <stdio.h>
#include <malloc.h>
typedef struct stack STACK;
struct stack {
int key;
STACK *next;
};
typedef STACK * STACKPTR;
void init( void );
void push( STACKPTR * );
void pop();
void print( STACKPTR );
int main()
{
int sel = 1;
STACKPTR stack;
while ( sel != 0 ) {
init();
printf("select: ");
scanf("%d", &sel);
switch( sel ){
case 1 : push( &stack );
print( stack );
break;
case 2 : pop();
break;
case 3 : sel = 0;
break;
}
}
return 0;
}
void init( void )
{
printf(" *** seletion ***\n");
printf("1.push\n2.pop\n3.end\n\n");
}
void push( STACKPTR * stack )
{
int data;
STACKPTR st;
st = malloc( sizeof( STACK ) );
if ( st != NULL ) {
printf("input the key: ");
scanf("%d", &data);
st->key = data;
st->next = *stack;
*stack = st;
}
else {
printf("Memory was not allocated!\n");
}
}
void pop()
{
}
void print( STACKPTR stack )
{
if ( stack == NULL ) printf("The stack is empty!!");
else {
while ( stack != NULL ) {
printf("%d\n", stack->key);
stack = stack->next;
}
}
}
[/code][/b]Forums:


Re: 동적할당을 통한 구조체스택 플그램....
void print( STACKPTR stack ) { if ( stack == NULL ) printf("The stack is empty!!"); else { while ( stack != NULL ) { printf("%d\n", stack->key); stack = stack->next; } } }print 함수를 보면 stack 이 NULL 인지 아닌지 확인을 해서
stack 이 NULL 일 때 while loop 을 탈출합니다.
그런데 님의 code 상에서는 stack 이 NULL 인 경우가 없어요.
초기에 NULL 값으로 초기화가 안된거지요
잘 생각해 보세요.
개념없는 초딩들은 좋은 말로 할때 DC나 웃대가서 놀아라. 응?
ㅡㅡ;;;;
참.... 생각을 하면서 짲을텐데... 왜 저런게 안보였을까요....
어이가 없넹.... ^^;; 저런걸 한참을 찾아 해맸다니...
아무튼 감솨.... push()까지 잘돌아가네요...
댓글 달기