Hier ist meine Funktion für iterative Inorder Traversal. Aber wenn ich es ausführe, erhalte ich einen Segmentierungsfehler. Ich verwende einen Stapel für die Traversierung. In dem gegebenen Programm habe ich auch eine rekursive Funktion für inorder traversal um zu überprüfen, ob meine create() Funktion funktioniert.Iterative Inorder Traversal
Ich schiebe den Knoten auf den Stapel und Bewegen nach links des Knotens und nach, dass ich den Knoten aus dem Stapel knalle und es Druck und indem root=root->rlink
nach rechts gehen.
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *llink;
struct node *rlink;
}Node;
typedef struct Stack
{
Node *a[10];
int top;
}stack;
void push(stack *s,Node *root)
{
if(s->top==9)
printf("FULL");
else
{
s->top++;
s->a[s->top]=root;
}
}
Node *pop(stack *s)
{
if(s->top==-1)
printf("Empty");
return s->a[s->top--];
}
void inorder(Node *root)
{
stack s;
s.top=-1;
int flag=1;
while(flag)
{
if(s.top!=9)
{
push(&s,root);
root=root->llink;
}
else{
if(s.top!=-1)
{
root=pop(&s);
printf("%d",root->data);
root=root->rlink;
}
else
flag=0;
}
}
}
void inor(Node *root)
{
if(root!=NULL)
{
inor(root->llink);
printf("%d",root->data);
inor(root->rlink);
}
}
Node *create(Node *root,int key)
{
if(root==NULL)
{
root=(Node *)malloc(sizeof(Node));
root->data=key;
root->rlink=root->llink=NULL;
}
else
{
if(key>root->data)
{
root->rlink=create(root->rlink,key);
}
else if(key<root->data)
{
root->llink=create(root->llink,key);
}
}
return root;
}
int main()
{
Node *h=NULL;
h=create(h,5);
h=create(h,1);
h=create(h,3);
h=create(h,8);
h=create(h,12);
h=create(h,51);
inorder(h);
//inor(h);
}
Haben Sie einen Debugger sofort verwendet, um herauszufinden, welche Linie die seg Fehler verursacht und die Ausführung des Programms zu verfolgen? – kaylum
Stellen Sie sicher, dass Sie Diagnosedrucknachrichten mit einem Zeilenumbruch beenden (oder verwenden Sie 'fflush (stdout);') - andernfalls wird die Nachricht möglicherweise nie angezeigt, wenn der Code abstürzt und Sie den falschen Eindruck haben, wo der Absturz auftritt. –
@kaylum yah ich habe das, aber ich kann es nicht herausfinden –