Write a function in C(not c++ or C#) that recieves an XML file and traverses the
ID: 3795426 • Letter: W
Question
Write a function in C(not c++ or C#) that recieves an XML file and traverses the tree in the following function with recursion and prints the contents. (i believe in pre-order) USE NAVIGATION FROM libxml2 API http://xmlsoft.org/html/libxml-tree.html, the doc passed to display_xmltree is from main, xmlDocPtr doc = xmlReadFile(argv[1], NULL, XML_PARSE_NONET | XML_PARSE_NOBLANKS);
void display_xmltree(xmlDocPtr doc)
{
xmlNode *root_node = xmlDocGetRootElement(doc);
//recursion code here
}
Explanation / Answer
//EXAMPLE PROGRAM FOR SINGLE LINKED LIST
# include <iostream.h>
# include <conio.h>
# include <stdlib.h>
struct node
{
int number;
node *next;
};
class singlelist
{
node *first,*prev,*temp,*curr;
public:
singlelist()
{
first=NULL;
}
void create()
{
cout<<"Stop by -999"<<endl;
temp=new node;
cout<<"Enter the numbers ";
cin>>temp->number;
while(temp->number!=-999)
{
temp->next=NULL;
if(first==NULL)
{
first=temp;
prev=first;
}
else
{
prev->next=temp;
prev=temp;
}
temp=new node;
cin>>temp->number;
} //end of while
}
void deletenode()
{
int num;
cout<<" Enter the number to delete ";
cin>>num;
if(first->number==num)
{
first=first->next;
return;
}
else
{
prev=first;
curr=first->next;
while(curr->next!=NULL)
{
if(curr->number==num)
{
prev->next=curr->next;
return;
}
prev=curr;
curr=curr->next;
}
}
if(curr->number==num)
{
prev->next=NULL;
return;
}
cout<<" No such number";
}
void insertbefore()
{
int nu;
temp=new node;
cout<<" Enter the number ";
cin>>temp->number;
cout<<" before the number ";
cin>>nu;
temp->next=NULL;
prev=first;
curr=first;
/* if(first==NULL) //if the list is empty then we can insert in this way
{
first=temp;
return;
}*/
if(curr->number==nu)
{
temp->next=first;
first=temp;
return;
}
else
{
prev=curr;
curr=curr->next;
while(curr->next!=NULL)
{
if(curr->number==nu)
{
prev->next=temp;
temp->next=curr;
return;
}
prev=curr;
curr=curr->next;
}
}
if(curr->number==nu)
{
prev->next=temp;
temp->next=curr;
return;
}
cout<<" No such number ";
}
void insertafter()
{
int nu;
temp=new node;
cout<<" Enter the number ";
cin>>temp->number;
cout<<" After the number ";
cin>>nu;
temp->next=NULL;
prev=first;
curr=first;
/* if(first==NULL) //if the list is empty then we can insert in this way
{
first=temp;
return;
}*/
if(curr->number==nu)
{
temp->next=first->next;
first->next=temp;
return;
}
else
{
prev=curr;
curr=curr->next;
while(curr->next!=NULL)
{
if(curr->number==nu)
{
temp->next=curr->next;
curr->next=temp;
return;
}
prev=curr;
curr=curr->next;
}
}
if(curr->number==nu)
{
curr->next=temp;
temp->next=NULL;
return;
}
cout<<" No such number ";
}
void print()
{
cout<<" The list is "<<endl;
cout<<" ----------- "<<endl;
temp=first;
while(temp!=NULL)
{
cout<<temp->number<<"-->";
temp=temp->next;
}
cout<<"Nil"<<endl;
getch();
}
};
void main()
{
int ch=0;
singlelist s;
clrscr();
cout<<" Linked List creation ";
s.create();
clrscr();
while(ch!=5)
{
clrscr();
cout<<" 1.Insert Before";
cout<<" 2.Insert After";
cout<<" 3.Delete ";
cout<<" 4.Print ";
cout<<" 5.Exit ";
cout<<" Enter your choice ";
cin>>ch;
switch(ch)
{
case 1:
s.insertbefore();
s.print();
break;
case 2:
s.insertafter();
s.print();
break;
case 3:
s.deletenode();
s.print();
break;
case 4:
s.print();
break;
case 5:
s.print();
exit(1);
}
}
getch();
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.