我是一个cs专业在读的学生,有一个作业想请问一下,以下是源代码
#include <stdio.h>
#include <stdlib.h>
struct node {
struct node* left;
int data;
struct node* right;
};
typedef struct node Node;
Node* add(Node*, int);
Node* create_node(int);
void print_list(Node*);
int main()
{
Node* list=NULL;
int item;
do {
scanf("%d",&item);
if (item != -1) list = add(list,item);
}while(item!=-1);
print_list(list);
printf("\n");
return 0;
}
Node* add(Node* list, int item)
{
Node* ptr;
Node* old;
if(list==NULL) list=create_node(item);
else {
ptr=list;
while( ptr!=NULL ) {
old = ptr;
if(item < ptr->data) ptr = ptr->left;
else ptr = ptr->right;
}
if(item < old->data)
old->left=create_node(item);
else old->right = create_node(item);
}
return list;
}
Node* create_node(int item)
{
Node* new_node;
new_node = (Node*)calloc(1,sizeof(Node));
new_node->left=NULL;
new_node->data = item;
new_node->right = NULL;
return new_node;
}
void print_list(Node* list)
{
if (list!=NULL) {
print_list(list->left);
print_list(list->right);
printf("%d ", list->data);
}
return;
}
这时我输入3 5 1 7 2 8 4 6 9 -1得出的结果为2 1 4 6 9 8 7 5 3
请问这个数据构造的类型叫做什么?
如果输出结果应为1 2 3 4 5 6 7 8 9,那我需要修改函数 print_list()为什么?
这个数据探索需要的计算量为多少?
删除一个data的计算量应为多少?
急求,请各位大哥解答一下