great8034   3년 전

#include <stdio.h>
#include <stdlib.h>

typedef struct _node{
    int data;
    struct _node *right;
    struct _node *left;
}node;
int front=0,rear=0;
node *queue[100];
int isqueueempty(void);
void visit(node *ptrnode)
{
 printf("%c ->", ptrnode->data);
}
void init_queue(void)
{
 front = rear = 0;
}
node *get(void)
{
 node *ptrnode;
 if(!isqueueempty())
 {
  ptrnode = queue[front];
  front++;
  return ptrnode;
 }
 else{
  printf("queue is empty!!\n\n");
 }
}

void put(node *ptrnode)
{
    queue[rear] = ptrnode;
    rear = (++rear)%100;
}

int isqueueempty(void)
{
 if(front == rear){
  return 1;
 }
 return 0;
}

node *head,*end;
node *tmpnode = head,*rootnode = head;
void init(void)
{
    head = (node *)malloc(sizeof(node));
    end = (node *)malloc(sizeof(node));
 head->right = end;
 head->left = end;
 end->left = end;
 end->right =end;
}

void insert(int c)
{
 node *ptrnode;
 ptrnode = (node *)malloc(sizeof(node));
 ptrnode->right = end;
 ptrnode->left = end;
 ptrnode->data = c;
 if(head->right == end)
 {
  head->right = ptrnode;
  head->left = end;
  tmpnode = tmpnode->right;
 }
 else{
     tmpnode->right = ptrnode;
     tmpnode = tmpnode->right;
 }
}

void traverse(node *start)
{
    put(start);
    node *ptrnode;
    while(!isqueueempty())
    {
     ptrnode = get();
     visit(ptrnode);
     
     if(ptrnode->left != end){
      put(ptrnode->left);
  }
  if(ptrnode->right != end){
   put(ptrnode->right);
  }
 }
}

int main(void)
{
 init();
 insert(1);
 insert(2);
 insert(3);
 traverse(rootnode->right);
}

출력결과가 1->2->3  요렇게 나오길 기대했는데

프로그램이 멈췄습니다.. 어디가 틀렸고 부족한지 알려주세요

댓글을 작성하려면 로그인해야 합니다.