|
컴파일러는 visual studio 6.0이구요
C언어인데요
소스는 맞는거 같은데
컴파일하면
error C2018: unknown character '0xa1'
에러라고 자꾸 뜨내요
원인을 몇시간째 못찾겠습니다...소스좀 봐주세요...
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define IS_FULL(ptr) (!(ptr))
#define IS_EMPTY(ptr) (!(ptr))
typedef struct {
int hakbun;
char name[10];
int age;
char department[14];
int year;
}element;
typedef struct node *tree_pointer;
typedef struct node {
int data;
tree_pointer left_child, right_child;
}node;
void inorder(tree_pointer ptr);
void preorder(tree_pointer ptr);
void postorder(tree_pointer ptr);
void insert_node(tree_pointer *node,int num);
tree_pointer modified_search(tree_pointer tree,int num);
tree_pointer search(tree_pointer tree, int key);
void main()
{
tree_pointer tree=NULL;
element data;
int num,travarsal;
while(1){
printf("\n*********************\n");
printf("*학생 자료입력은 1 *\n");
printf("*모든학생자료 출력은 2*\n");
printf("\n*********************\n");
printf("번호를 입력하시오: ");
scanf("%d", &num);
if(num==0)break;
switch(num) {
case 1: {
printf("학번: "); scanf("%d",&data.hakbun);
printf("이름: "); scanf("%d",&data.name);
printf("나이: "); scanf("%d",&data.age);
printf("학과: "); scanf("%d",&data.department);
printf("학년: "); scanf("%d",&data.year);
insert_node(&tree,num);
break;
}
case 2: {
printf("\n***************************n");
printf("* 어떤 순회로 출력할까요? *\n");
printf("* 중위순회는 1 *\n");
printf("* 전위순회는 2 *\n");
printf("* 후위순회는 3 *\n");
printf("\n***************************n");
printf("번호를 입력하시오 : ");
scanf("%d", &travarsal);
switch (travarsal)
{
case 1: { printf("\n 중위 순회는 : ");
inorder(tree);
break;
}
case 2: { printf("\n 전위 순회는 : ");
preorder(tree);
break;
}
case 3: { printf("\n 후위 순회는 : ");
postorder(tree);
break;
}
}
}
}
}
}
void inorder(tree_pointer ptr)
{
if(ptr) {
inorder(ptr->left_child);
printf("%d",ptr->data);
inorder(ptr->right_child);
}
}
void preorder(tree_pointer ptr)
{
if(ptr){
printf("%d",ptr->data);
preorder(ptr->left_child);
preorder(ptr->right_child);
}
}
void postorder(tree_pointer ptr)
{
if(ptr) {
postorder(ptr->left_child);
postorder(ptr->right_child);
printf("%d",ptr->data);
}
}
void insert_node(tree_pointer *node,int num)
{
tree_pointer ptr, temp;
temp=modified_search(*node, num);
if(temp || !(*node)) {
ptr = (tree_pointer)malloc(sizeof(node));
if(IS_FULL(ptr)) {
printf("The memory is full \n");
exit(1);
}
ptr->data = num;
ptr->left_child = NULL;
ptr->right_child = NULL;
if (*node) {
if(num < temp->data) temp->left_child=ptr;
else temp->right_child =ptr;
}
else *node=ptr;
}
}
tree_pointer modified_search(tree_pointer tree,int num)
{
tree_pointer parent=NULL;
element data;
while(tree) {
if(tree->data == data.hakbun) return NULL;
if(tree->data < data.hakbun) {
parent = tree;
tree= tree->left_child;
}
else{
parent =tree;
tree = tree->right_child;
}
}
return NULL;
}
tree_pointer search(tree_pointer tree, int key)
{
while(tree)
{
if(key == tree->data)
return tree;
if(key < tree->data)
tree = tree->left_child;
else
tree = tree->right_child;
}
return NULL;
}
|