#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;}
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 요렇게 나오길 기대했는데
프로그램이 멈췄습니다.. 어디가 틀렸고 부족한지 알려주세요
댓글을 작성하려면 로그인해야 합니다.
great8034 6년 전
#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)
int isqueueempty(void){
queue[rear] = ptrnode;
rear = (++rear)%100;
}
{
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 요렇게 나오길 기대했는데
프로그램이 멈췄습니다.. 어디가 틀렸고 부족한지 알려주세요