도와줘요 이글루스 지식인! ㅠㅠ -역폴란드 기법 리스트 써서 작성하기 by 아즈마

#include <stdio.h>
#include <string.h>
#include <ctype.h>

typedef struct list {
int item;
struct list *next;
} list;

list *stk;

int emptystack() { /* スタックが空かどうかの判定 */
if ( stk == NULL ) return 1;
return 0;
}

void initstack() { /* スタックを初期化 */
stk = NULL;
}

void push( int x ) { /* スタックにxを追加 */
list *p = (list *)malloc(sizeof( list)); /* C言語では malloc 領域を確保 */
p->item = x;
p->next = stk;
stk = p;
}

int pop)() { /* スタックからデータを取得 */
int x;
list *next;
if(emptystack() ) {
frpintf( stderr, "#### スタックが空になっています\n");
return 0;
}
x = stk->item;
next = stk->next;
free(stk); /* 教科書と違い、実際には malloc した領域を解放 */
stk = next;
return x;
}

int top() { /* スタックからデータを取得 */
return stk->item;
}


=============================================================================================

대충 이런 녀석인데 말이지요, 리스트를 가르쳐 주지도 않고서 시키는 망할 교수진들은 뒤로 제쳐놓고, 제가 생각하기에는 메인 함수로 위에 주어진걸 써서 출력만 시키면 되는 것 같은데 맞나요? 그리고 맞다면 출력은 어떻게 해야 할까요? ㅠㅠ

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://ldh21.egloos.com/tb/2469551 [도움말]

덧글

  • Jin 2009/11/04 13:48 # 답글

    수식 문자열에서 한 글자씩 읽으며 위의 코드를 이용하여 stack1에 push를 하시면서 숫자인지 연산자인지를 판별하면서 적당히 pop을 하여 stack2에 저장하는 방식이면 될듯 합니다.
    http://user.chollian.net/~tadoli/lecture/etc/polish.htm 여길 보시면 역폴란드 기법으로 수식을 적는 법이 나와있네요.
    리스트의 아이템을 출력하는 방식을 물으신거라면
    리스트->next가 null일때까지 리스트의 다음 노드로 계속 이동해가며 리스트->item을 출력하시면 됩니다.
  • 아즈마 2009/11/04 15:36 #

    오오 감사합니다 ㅠㅠ 수업 다 끝내고 집에 와서 확인해 봐야겠네요...
덧글 입력 영역