数据结构二叉树顺序实现代码问题

用数据结构二叉树代码顺序实现的时候,无法编译成功,不知道怎么引用、用指针,结构体数组怎么引入函数,求解!

#include<stdio.h>
#define Maxsize 1000
typedef struct TNode{
    int value;
    bool isEmpty;
}TNode;
TNode t[Maxsize];
void Initbitree(TNode&);
bool Createbitree(TNode&,int);
void print(TNode);
bool Preorder(TNode,int);

int main()
{
    Initbitree(t);
    int e;
    printf("输入根节点数值:\n");
    scanf("%d",&e);
    Createbitree(t,e);
    int i;
    printf("输入开始遍历位:\n");
    scanf("%d",&i);
    printf("先序遍历:\n"); 
    Preorder(t, i);


    return 0;
}

void Initbitree(TNode &T)
{
    for(int i=0;i<Maxsize;i++)
    T[i].isEmpty=true; 
}
void Creatbitree(TNode &T,int e)
{
    T[1].value=e;
    T[1].isEmpty=false;
}
void print(TNode T,int i)
{
    printf("打印树节点:%d\n",T[i].value);
}
//先序遍历
bool Preorder(TNode T,int i)
{
    if(T[i].isEmpty==false)
    print(T,i);
    if(T[2i].isEmpty==false)
    Preorder(T,2i);
    if(T[2i+1].isEmpty==false)
    Preorder(T,2i+1); 
    return true;
}
#include<stdio.h>
#define Maxsize 1000
typedef struct TNode{
    int value;
    bool isEmpty;
}TNode;
TNode t[Maxsize];
void Initbitree(TNode*);
void Createbitree(TNode*,int);
void print(TNode*);
bool Preorder(TNode*,int);

int main()
{
    Initbitree(t);
    int e;
    printf("输入根节点数值:\n");
    scanf("%d",&e);
    Createbitree(t,e);
    int i;
    printf("输入开始遍历位:\n");
    scanf("%d",&i);
    printf("先序遍历:\n"); 
    Preorder(t, i);


    return 0;
}

void Initbitree(TNode *T)
{
    for(int i=0;i<Maxsize;i++)
    T[i].isEmpty=true; 
}
void Createbitree(TNode *T,int e)
{
    T[1].value=e;
    T[1].isEmpty=false;
}
void print(TNode* T,int i)
{
    printf("打印树节点:%d\n",T[i].value);
}
//先序遍历
bool Preorder(TNode* T,int i)
{
    if(T[i].isEmpty==false)
    print(T,i);
    if(T[2*i].isEmpty==false)
    Preorder(T,2*i);
    if(T[2*i+1].isEmpty==false)
    Preorder(T,2*i+1); 
    return true;
}

问题解决的话,请点下采纳