так что я работал над своим кодом. У меня есть эти struct
typedef char infotype;
typedef int letak;
typedef struct {
infotype info;
letak parent, firstson, nextsibling;
} node;
typedef node tree;
, и я имею в виду, чтобы сделать «дерево» в массив узла и назначить его, поэтому я делаю эти процедуры:
void createTree(tree T[])
{
T[0].parent = 0;
T[0].nextsibling = 0;
}
void createNode(tree T[], int k, int i, char value)
{
if(i == 0)
{
T[i].info = value;
T[i].firstson = i+1;
}
else
{
T[i].info = value;
T[i].parent = (i-1) / k;
T[i].firstson = (i * k) + 1;
if (i % k == 0)
{
printf("Sorry but you cannot have any sibling!");
}
else
{
T[i].nextsibling = i+1;
}
}
}
и мой основной драйвер is:
#include <stdio.h>
int main()
{
int maksimum;
tree pohon[maksimum];
int i = 0;
char info;
maksimum = 3;
createTree(pohon);
for (i = 0; i < 3; i++) //here things get weird
{
printf("Input the node name : ");
scanf("%c", &info);
createNode(pohon, 4, i, info);
}
return 0;
}
, пока я запускаю свою программу, она дает мне сообщение:
Введите имя узла: a
Введите имя узла: Введите имя узла: b
('a' также является вводом от пользователя), но я ожидал, что оно будет:
Введите имя узла: a
Введите имя узла: b
Введите имя узла: c
Может кто-нибудь сказать мне, где я ошибся?