#include<iostream>
using namespace std;
struct DLL
{
int data;
DLL *next;
DLL *prev;
}*head=NULL;
void insertFront (int data);
void insertAfter (DLL* prevNode, int data);
void insertEnd (int data);
void displayList();
bool search(int x);
void DeleteFirstNode();
void DeleteSpecific(int val);
void DeleteEndNode ();
int main()
{
insertFront(5);
insertEnd(50);
insertFront(8);
insertFront(10);
insertAfter(head->next->next, 100);
//displayList();
//DeleteFirstNode();
displayList();
//DeleteEndNode();
//DeleteSpecific(8);
//displayList();
//search(10)?cout <<"Found"<<endl: cout<< "Not Found"<<endl;
}
void insertFront (int data)
{
DLL *newNode = new DLL;
newNode->data = data;
newNode->next = head;
newNode->prev = NULL;
if(head != NULL)
{
head->prev = newNode;
}
head = newNode;
}
void insertAfter (DLL* prevNode, int data)
{
if (prevNode == NULL)
{
cout<<"Previous node is required , it cannot be NULL";
}
DLL *newNode = new DLL;
newNode->data = data;
newNode->next = prevNode->next;
prevNode->next = newNode;
newNode->prev = prevNode;
if(newNode->next != NULL)
{
newNode->next->prev = newNode;
}
}
void insertEnd (int data)
{
DLL *newNode = new DLL;
DLL *last = head;
newNode->data = data;
newNode->next = NULL;
if (head == NULL)
{
newNode->prev = NULL;
head = newNode;
}
while (last->next != NULL)
{last = last->next;}
last->next = newNode;
newNode->prev = last;
}
void displayList()
{
DLL* last= head;
while (last != NULL)
{
cout<<last->data<<endl;
last = last->next;
}
}
bool search(int x)
{
DLL* temp = head;
while (temp->data != x
&& temp->next != NULL)
{
temp = temp->next;
}
if (temp->data != x)
{
return false;
}
return true;
}
void DeleteFirstNode()
{
DLL *temp = head;
if(head == NULL)
{
cout << "n List is emptyn";
}
else
{
head = head -> next;
head -> prev = NULL;
free(temp);
cout <<"nNode Deletedn";
}
}
void DeleteSpecific(int val)
{
DLL *temp = head;
DLL *ptr = new DLL;
while(temp -> data != val)
temp = temp -> next;
if(temp -> next == NULL)
{
cout<<("nCan't deleten");
}
else
{
temp->next->prev = temp->prev;
temp->prev->next = temp->next;
//ptr = temp -> next;
//temp -> next = ptr -> next;
//ptr -> next -> prev = temp;
free(ptr);
cout <<("nNode Deletedn");
}
}
void DeleteEndNode ()
{
DLL *temp = head;
if(head == NULL)
{
cout <<"The list is empty";
}
else
{
while(temp->next != NULL)
{
temp = temp -> next;
}
temp -> prev -> next = NULL;
free(temp);
cout <<"nNode Deletedn";
}
}

Dynamic-link library (DLL) .docx

  • 1.
    #include<iostream> using namespace std; structDLL { int data; DLL *next; DLL *prev; }*head=NULL; void insertFront (int data); void insertAfter (DLL* prevNode, int data); void insertEnd (int data); void displayList(); bool search(int x); void DeleteFirstNode(); void DeleteSpecific(int val); void DeleteEndNode (); int main() { insertFront(5); insertEnd(50); insertFront(8); insertFront(10); insertAfter(head->next->next, 100); //displayList(); //DeleteFirstNode(); displayList(); //DeleteEndNode(); //DeleteSpecific(8); //displayList(); //search(10)?cout <<"Found"<<endl: cout<< "Not Found"<<endl; } void insertFront (int data) { DLL *newNode = new DLL; newNode->data = data; newNode->next = head; newNode->prev = NULL; if(head != NULL) { head->prev = newNode; } head = newNode; } void insertAfter (DLL* prevNode, int data) { if (prevNode == NULL) { cout<<"Previous node is required , it cannot be NULL"; }
  • 2.
    DLL *newNode =new DLL; newNode->data = data; newNode->next = prevNode->next; prevNode->next = newNode; newNode->prev = prevNode; if(newNode->next != NULL) { newNode->next->prev = newNode; } } void insertEnd (int data) { DLL *newNode = new DLL; DLL *last = head; newNode->data = data; newNode->next = NULL; if (head == NULL) { newNode->prev = NULL; head = newNode; } while (last->next != NULL) {last = last->next;} last->next = newNode; newNode->prev = last; } void displayList() { DLL* last= head; while (last != NULL) { cout<<last->data<<endl; last = last->next; } } bool search(int x) { DLL* temp = head; while (temp->data != x && temp->next != NULL)
  • 3.
    { temp = temp->next; } if(temp->data != x) { return false; } return true; } void DeleteFirstNode() { DLL *temp = head; if(head == NULL) { cout << "n List is emptyn"; } else { head = head -> next; head -> prev = NULL; free(temp); cout <<"nNode Deletedn"; } } void DeleteSpecific(int val) { DLL *temp = head; DLL *ptr = new DLL; while(temp -> data != val) temp = temp -> next; if(temp -> next == NULL) { cout<<("nCan't deleten"); } else { temp->next->prev = temp->prev; temp->prev->next = temp->next; //ptr = temp -> next; //temp -> next = ptr -> next; //ptr -> next -> prev = temp; free(ptr); cout <<("nNode Deletedn"); } } void DeleteEndNode () { DLL *temp = head;
  • 4.
    if(head == NULL) { cout<<"The list is empty"; } else { while(temp->next != NULL) { temp = temp -> next; } temp -> prev -> next = NULL; free(temp); cout <<"nNode Deletedn"; } }