c++ How can I make the display_listreverse() use the same nodes instead of havin
ID: 641703 • Letter: C
Question
c++
How can I make the display_listreverse() use the same nodes instead of having to create new ones?
#include <iostream>
using namespace std;
struct Node {
int data;
Node* next;
Node* prev;
Node* head=0;
Node* tail=0;
Node(int d=0, Node* p=0) : data(d), next(p), prev(p) {}
Node* insert_after(int value);
Node* insert_before(int value);
void Delete();
void display_list();
void display_listreverse();
};
Node* Node::insert_after(int value) {
Node *p = new Node(value);
p->next=head;
next=p;
return p;
}
Node* Node:: insert_before(int value)
{
Node*p = new Node(value);
p->prev=tail;
prev=p;
return p;
}
void Node:: Delete(){
Node *p = next;
if (p != 0) {
next = p->next;
delete[] p;
}
}
void Node::display_list() {
Node *head = this;
while(head != 0) {
cout << head->data << " ";
head = head->next;
}
cout << ' ';
}
void Node:: display_listreverse()
{
Node *tail = this;
while(tail !=0)
{
cout<<tail->data<< " ";
tail = tail-> prev;
}
}
int main(){
Node *head= new Node(10);
Node *p = head->insert_after(20);
p=p->insert_after(30);
p->insert_after(40);
head->display_list();
Node *tail= new Node(40);
Node *t = tail->insert_before(30);
t= t->insert_before(20);
t->insert_before(10);
tail->display_listreverse();
cout<<endl;
tail->Delete();
t->Delete();
head->Delete();
p->Delete();
head->display_list();
return 0;
}
Explanation / Answer
#include using namespace std; void addNode(int); void displayListForward(); void displayListBackWard(); typedef struct doubly { int data; struct doubly *prev; struct doubly *next; }DOUBLY; DOUBLY *node=NULL; DOUBLY *head=NULL; void addNode(int value) { if(node == NULL) { node = new DOUBLY; if(node == NULL) { coutRelated Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.