2013-08-11 2 views
1

내가 갖는 동안 : 오류 C2059은 정의 최대() 함수는

Error 1 error C2059: syntax error : 'type' c:\users\user\documents\visual studio 2010\projects\ex4\q4\tree.h 40 1 Q4 
Error 2 error C2059: syntax error : 'type' c:\users\user\documents\visual studio 2010\projects\ex4\q4\tree.c 174 1 Q4 

max()

여기

tree.c

의 하단에있는 것은 tree.h입니다 : 여기

#ifndef __TREE_H 
#define __TREE_H 

/***** Type definitions *****/ 

typedef struct TreeNode{ 
    int data; 
    struct TreeNode* left; 
    struct TreeNode* right; 
} TreeNode; 
typedef struct tree{ 
    TreeNode* root; 
} Tree; 

/****** Prototypes *****/ 

/* Testing trees */ 
Tree testTreeCase1(); 
Tree testTreeCase2(); 
Tree testTreeCase3(); 
Tree testTreeCase4(); 
Tree testTreeCase5(); 

/* This function creates a new node */ 
TreeNode* createNewTreeNode(int data, TreeNode *left, TreeNode *right); 
/* This function deallocates a given tree */ 
void freeTree(Tree *tr); 
void freeTreeHelper(TreeNode *root); 
/* This function returns the number of nodes of a given tree */ 
int numNodes(Tree *tr); 
int numNodesHelper(TreeNode *root); 

/* This function returns the sum of all of the nodes data of a given tree */ 
int sumNodes(Tree *tr); 
int sumNodesHelper(TreeNode *root); 

int height(Tree *tr); 
int heightHelper(TreeNode *root); 

int max(int a, int b); 
#endif 

및 tree.c :

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

/* This function creates a new node */ 
TreeNode* createNewTreeNode(int data, TreeNode *left, TreeNode *right) 
{ 
    TreeNode *res; 
    res = (TreeNode*)malloc(sizeof(TreeNode)); 
    res->data = data; 
    res->left = left; 
    res->right = right; 
    return res; 
} 
/* Shell function for numNodes() */ 
int numNodes(Tree *tr) 
{ 
    return numNodesHelper(tr->root); 
} 
/* This function returns the number of nodes of a given tree's root node */ 
int numNodesHelper(TreeNode *root) 
{ 
    int numNodesLeft, numNodesRight; 

    if (root == NULL) 
     return 0; 

    else 
    { 
     numNodesLeft = numNodesHelper(root->left); 
     numNodesRight = numNodesHelper(root->right); 
     return numNodesLeft + numNodesRight + 1; 
    } 
} 
/* Shell function for sumNodes() */ 
int sumNodes(Tree *tr) 
{ 
    return sumNodesHelper(tr->root); 
} 
/* This function returns the sum of all of the nodes data of a given tree's root node */ 
int sumNodesHelper(TreeNode *root) 
{ 
    int sumNodesLeft, sumNodesRight; 

    if (root == NULL) 
     return 0; 

    else 
    { 
     sumNodesLeft = sumNodesHelper(root->left); 
     sumNodesRight = sumNodesHelper(root->right); 
     return sumNodesLeft + sumNodesRight + root->data; 
    } 
} 
/* Shell function for freeTree() */ 
void freeTree(Tree *tr) 
{ 
    freeTreeHelper(tr->root); 
    tr->root = NULL; 
} 
/* This function deallocates a given tree's root node */ 
void freeTreeHelper(TreeNode *root) 
{ 
    if (root == NULL) 
     return; 

    else if (root->left == NULL && root->right == NULL) 
     free(root); 

    else 
    { 
     freeTreeHelper(root->right); 
     freeTreeHelper(root->left); 
     free(root); 
    } 
} 
/* Shell function for heightHelper() */ 
int height (Tree *tr) 
{ 
    return heightHelper(tr->root); 
} 
/* This function returns the height of a given tree's root node */ 
int heightHelper(TreeNode *root) 
{ 
    int heightLeft, heightRight; 

    if (root == NULL) // case empty tree 
     return -1; 

    else if (root->left == NULL && root->right == NULL) 
     return 0; 

    else if (root->left == NULL) 
     return 1 + heightHelper(root->right); 

    else if (root->right == NULL) 
     return 1+ heightHelper(root->left); 

    else 
    { 
     heightLeft = heightHelper(root->left); 
     heightRight = heightHelper(root->right); 
     return 1 + (heightLeft>heightRight?heightLeft:heightRight); 
    } 
} 

// Checking trees according to special cases 
/* Case 1: Empty tree */ 
Tree testTreeCase1() 
{ 

    Tree resTree; 
    resTree.root = NULL; 
    return resTree; 

} 
/* Case 2: Only root node */ 
Tree testTreeCase2() 
{ 
    Tree resTree; 
    TreeNode *root; 

    root = createNewTreeNode(1, NULL, NULL); 
    resTree.root = root; 

    return resTree; 
} 
/* Case 3: Only right sub-tree exists */ 
Tree testTreeCase3() 
{ 
    Tree resTree; 
    TreeNode *root, *l1_r, *l2_rr, *l2_rl; 

    l2_rl = createNewTreeNode(4, NULL, NULL); 
    l2_rr = createNewTreeNode(3, NULL, NULL); 
    l1_r = createNewTreeNode(2, l2_rl, l2_rr); 
    root = createNewTreeNode(1, NULL, l1_r); 
    resTree.root = root; 

    return resTree; 
} 
/* Case 4: Only left sub-tree exists */ 
Tree testTreeCase4() 
{ 
    Tree resTree; 
    TreeNode *root, *l1_l, *l2_lr, *l2_ll; 

    l2_ll = createNewTreeNode(4, NULL, NULL); 
    l2_lr = createNewTreeNode(3, NULL, NULL); 
    l1_l = createNewTreeNode(2, l2_ll, l2_lr); 
    root = createNewTreeNode(1, l1_l, NULL); 
    resTree.root = root; 

    return resTree; 
} 
/* Case 5: Both left and right sub-trees exists */ 
Tree testTreeCase5() 
{ 
    Tree resTree; 
    TreeNode *root, *l1_r, *l1_l, *l2_lr, *l2_ll, *l2_rr, *l2_rl; 

    l2_ll = createNewTreeNode(7, NULL, NULL); 
    l2_lr = createNewTreeNode(6, NULL, NULL); 
    l2_rl = createNewTreeNode(5, NULL, NULL); 
    l2_rr = createNewTreeNode(4, NULL, NULL); 
    l1_l = createNewTreeNode(2, l2_ll, l2_lr); 
    l1_r = createNewTreeNode(3, l2_rl, l2_rr); 
    root = createNewTreeNode(1, l1_l, l1_r); 
    resTree.root = root; 

    return resTree; 
} 

int max(int a, int b) 
{ 
    return a>b ? a:b; 
} 
+0

당신이 당신 자신의 가정을하지 않았으므로 아무도 당신을 도우려는 것을 스크롤하지 않을 것입니다. 우리가 검토해야 할 코드를 분리하고, 오류를 가정하고 * 아마도 누군가가 당신을 도울 것입니다. 지금 당장은이 문제를 해결할 아무 것도하지 않은 것처럼 보입니다. –

+0

@JacobPollack, 해결할 부분은 무엇입니까? 오류는'max()'함수를 정의한 순간을 나타냅니다. 그것없이 코드는 완벽하게 준수합니다. 나는 아무도 자신의 시간을 낭비하는 것을 좋아하지 않는다는 것을 알고 있기 때문에 tree.c의 맨 아래에이 함수가 작성되었다고 썼다. 그러나 나는 지난 번에 past.h를 풀기 위해 tree.h와 tree.c를 게시하기로했다. 전체 파일들. 어쨌든 고마워. – Quaker

+0

@JacobPollack, 무엇이 가치가 있는지, 심지어 오류를 이해하지 못한다. '형식'이라는 구문 오류가 무엇을 의미합니까? – Quaker

답변

1

문제가 있습니다. max은 사용하고있는 다른 라이브러리에 예약되어있을 가능성이 큽니다. 이것은 C로 큰 응용 프로그램에서 작업 할 때 공통적 인 문제입니다. 해결책은 max에서 my_max으로 함수의 이름을 바꾸거나 이미 max을 예약 한 라이브러리를 제거하는 것입니다.

+0

나는 실제로'stdlib','stdio'와'tree.h'만을 사용합니다. 아아 – Quaker