這是構建二元樹的非常簡單的函數。鏈接列表...不更改
我用Build_tree(first_TR, A);
它打印 補充說:「第一,加入第一,添加爲第一,添加爲第一,添加爲第一, 添加爲第一,添加爲第一,添加爲第一,添加爲第一,加作爲第一「,」。
這意味着first_TR == 0
。爲什麼?我也試過Build_tree(&first_TR, A);
不工作:(
typedef struct SElementBST {
struct SElementBST *left, *right; /* wskaźnik na kolejny element listy */
unsigned slowo[DlugoscSlow+1]; /* przechowywana wartość */
} TBST;
TBST *first_TR = 0;
void Build_tree(TBST *first, unsigned char array[IloscSlow][DlugoscSlow+1])
{
int i,k,m;
TBST *tmp, *parent;
for(i=0;i<IloscSlow;i++)
{
if(!first_TR)
{
first = (TBST*) malloc(sizeof(TBST));
first -> left = 0;
first -> right = 0;
printf("added as first, ");
for(k=0;k<DlugoscSlow+1;k++)
first -> slowo[k] = array[i][k];
}
else
{
tmp = first;
while(tmp != 0)
{
k = 0;
parent = tmp;
while ((tmp->slowo[k] == array[i][k]) && (k<DlugoscSlow-1))
k++;
if(tmp->slowo[k] < array[i][k]) tmp = tmp -> right;
else tmp = tmp -> left;
}
tmp = (TBST*) malloc(sizeof(TBST));
tmp -> left = 0;
tmp -> right = 0;
for(m=0;m<DlugoscSlow+1;m++)
tmp-> slowo[m] = array[i][m];
if(parent->slowo[k] < array[i][k]) parent -> right = tmp;
else parent -> left = tmp;
}
}
}
您的格式不一致。它不一定是完美的,但應該看起來有點像漂亮打印機的輸出。此外,幾乎每個人(幾乎每個程序員)都能理解英語。不幸的是,關於其他語言也不能這樣說,所以你應該用這種語言來保存變量和註釋。 – phihag 2011-04-02 10:09:51
如果你正在構建的是BST,爲什麼你的問題的標題提到了鏈表? – MAK 2011-04-02 11:47:41