私はこれまで同じトピックについて投稿しています。私は、MITオープンコースウェアを使用してデータを自己学習しています。 6.S096-C/C++コースの紹介と4番目の割り当てを試みています。リンクされたリスト - find_node_data
これは、バイナリ検索ツリーに基づいており、試してみました。私はデバッグのために値を表示したいが、毎回異なる実行を続けた。
1回はサイクルが完了せず、もう1回は無限に進みます。デバッグブロックはまた、他の関数(find_node_data)に関連しています私は完了する必要があります。だからここで何が間違っているのか分かるならば、find_node_dataを簡単に終えることができます。私はそれが何かに影響するかどうかを見るためにいくつかの点をコメントしました。私は間違って何をしていますか?
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int node_id;
int data;
struct node* left;
struct node* right;
}node;
///*** DO NOT CHANGE ANY FUNCTION DEFINITIONS ***///
// Declare the tree modification functions below...
node* newNode(int data,int node_id){
node* new_node = (node*) malloc(sizeof(node));
new_node->data = data;
new_node->node_id= node_id;
new_node->right= new_node->left=NULL;
return new_node;
}
node* insert_node(node* root, int node_id, int data) {
if(root==NULL)
return newNode(data,node_id);
else{
node* cur;
if(node_id<root->node_id){
cur=insert_node(root->left,data,node_id);
root->left=cur;
}
else if(node_id>root->node_id){
cur=insert_node(root->right,data,node_id);
root->right=cur;
}
}
return root;
}
// Find the node with node_id, and return its data
/*int find_node_data(node* root, int node_id) {
node* current;
for(current = root->; current->next!=NULL;
current= current->next){
if(current->data == data) return current;
}
return NULL;
}
*/
int main() {
/*
Insert your test code here. Try inserting nodes then searching for them.
When we grade, we will overwrite your main function with our own sequence of
insertions and deletions to test your implementation. If you change the
argument or return types of the binary tree functions, our grading code
won't work!
*/
int T,data,node_id;
printf("Print yo cases");
scanf("%d", &T);
node* root = NULL;
while(T-->0){
printf("Type yo numnums no. %d:",T);
scanf("%d %d",&data,&node_id);
root=insert_node(root,data,node_id);
}
node *lol;
node *king;
for(lol=root;lol->left!=NULL;lol=lol->left){
//for(king=root;king->right!=NULL;king=king->right){
printf("executed!\n");
printf("%d ",lol->node_id);//,king->node_id);
//}
}
return 0;
}
何の言語C/C++はありません。 CとC++は異なる言語です。そしてあなたは[ask]を読むべきです。また、 'malloc'&friendsや' void * 'の結果を一般的にキャストしないでください。 – Olaf
あなたの入力と出力のデータを表示し、それがあなたの期待を満たしていない場所を示してください。 –
'void print(node * np){ \t if(np){ \t \t print(np-> left); \t \t printf( "(%d、%d)"、np-> node_id、np-> data); \t \t print(np-> right); \t} } 'main()で' print(root);を呼び出します。 – BLUEPIXY