Ich habe bereits über das gleiche Thema gepostet. Ich bin selbstlernende Datenstrukturen mit MIT Open Courseware. Ich mache die 6.S096-Einführung in C/C++ Kurs und versuche die vierte Aufgabe.Verknüpfte Liste- find_node_data
Es basiert auf binäre Suchbäume und ich habe es versucht. Ich wollte die Werte für das Debugging drucken, aber jedes Mal verschiedene Ausführungen erhalten.
Einmal wird der Zyklus nicht abgeschlossen und das andere Mal geht es in die Unendlichkeit. Der Debugging-Block bezieht sich auch auf die andere Funktion (find_node_data) Ich muss vervollständigen. Wenn ich also herausfinden kann, was hier falsch ist, kann ich die find_node_data einfach fertigstellen. Ich habe ein paar Dinge kommentiert, um zu sehen, ob es irgendetwas betrifft. Was mache ich falsch?
#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;
}
Es gibt keine Sprache C/C++. C und C++ sind verschiedene Sprachen. Und du solltest [fragen] lesen. Wirf auch nicht das Ergebnis von 'malloc' & friends oder' void * 'im Allgemeinen. – Olaf
Bitte zeigen Sie Ihre Eingabe- und Ausgabedaten an und geben Sie an, wo sie nicht Ihren Erwartungen entspricht. –
'void print (Knoten * np) { \t if (np) { \t \t drucken (np-> links); \t \t printf ("(% d,% d)", np-> knoten_id, np-> daten); \t \t drucken (np-> rechts); \t} } 'dann rufen Sie' print (root); 'auf main. – BLUEPIXY