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