C-二元搜索树中“*”之前应为“)”
我正在用c编写一个二元搜索树,我一直得到一个愚蠢的错误:在声明和头文件中,函数开头的“*”标记消息之前应该有 主文件C-二元搜索树中“*”之前应为“)”,c,binary-search-tree,C,Binary Search Tree,我正在用c编写一个二元搜索树,我一直得到一个愚蠢的错误:在声明和头文件中,函数开头的“*”标记消息之前应该有 主文件 #include <stdlib.h> #include <stdio.h> #include "func.h" #define ARRAYSIZE 12 int main(int argc, char *argv[3]) { typedef struct node { int value; struct node * left;
#include <stdlib.h>
#include <stdio.h>
#include "func.h"
#define ARRAYSIZE 12
int main(int argc, char *argv[3]) {
typedef struct node {
int value;
struct node * left;
struct node * right;
} * node;
node* root = NULL;
int nodes[ARRAYSIZE] = {3,6,2,1,7,8,3,5,7,2,9,4};
int i;
for(i = 0; i < ARRAYSIZE; i++) {
root = insert(root, nodes[i]);
}
if (strcmp(argv[1], "q") == 0) quit();
if (strcmp(argv[1], "i") == 0) insert(argv[2]);
if (strcmp(argv[1], "d") == 0) delete(argv[2]);
if (strcmp(argv[1], "s") == 0) search(argv[2]);
if (strcmp(argv[1], "e") == 0) empty();
return 0;
}
可能是:
node * createNode(int value);
此时节点未知
将节点的定义移到头文件中。如果不告诉行号错误发生的位置,错误就更傻了。而且这个问题往往会偏离主题,因为它缺少足够的信息来诊断问题。有趣的是:节点a与结构节点a不同!我希望这不是故意的?@mah这是每个函数的开头,所以它是头文件的整个声明以及它们在函数文件中初始化的第一行。所以它说它每次说void insertnode*root,int n出现。。。但它适用于所有功能。@重复数据消除程序您这是什么意思?很可能。。。他的主文件有一个include of func.h,它需要节点类型,但该类型仅在该主文件中定义。另外,他的函数文件根本无法访问类型定义。这导致在非结构或文件中大量生成成员“left”/“right”/“value”的错误请求union@user3362954您不能一直在此处转储编译器错误。出现此错误是因为需要在struct node之前向前声明节点。
#ifndef FUNC_H
#define FUNC_H
node * createNode(int value);
void insert(node * root, int n);
void search(node * root, int n);
void empty(node * root);
void delete(node * root, int n);
int quit();
#endif
node * createNode(int value);