Subscribe & Get All Fresher Jobs Information & Study Materials PDF and Projects- Free Download
Data Structure Programs PDF
Pointers in C
Tech Interview in Datastructure
Data Structure Programming & Projects PDF- Free Download
DataStructure-Program to maintain a doubly linked list.
#include <stdio.h> #include <conio.h> #include <alloc.h> /* structure representing a node of the doubly linked list */ struct dnode { struct dnode *prev ; int data ; struct dnode * next ; } ; void d_append ( struct dnode **, int ) ; void d_addatbeg ( struct dnode **, int ) ; void d_addafter ( struct dnode *, int , int ) ; void d_display ( struct dnode * ) ; int d_count ( struct dnode * ) ; void d_delete ( struct dnode **, int ) ; void main( ) { struct dnode *p ; p = NULL ; /* empty doubly linked list */ d_append ( &p , 11 ) ; d_append ( &p , 2 ) ; d_append ( &p , 14 ) ; d_append ( &p , 17 ) ; d_append ( &p , 99 ) ; clrscr( ) ; d_display ( p ) ; printf ( "\nNo. of elements in the DLL = %d\n", d_count ( p ) ) ; d_addatbeg ( &p, 33 ) ; d_addatbeg ( &p, 55 ) ; d_display ( p ) ; printf ( "\nNo. of elements in the DLL = %d\n", d_count ( p ) ) ; d_addafter ( p, 4, 66 ) ; d_addafter ( p, 2, 96 ) ; d_display ( p ) ; printf ( "\nNo. of elements in the DLL = %d\n", d_count ( p ) ) ; d_delete ( &p, 55 ) ; d_delete ( &p, 2 ) ; d_delete ( &p, 99 ) ; d_display ( p ) ; printf ( "\nNo. of elements in the DLL = %d\n", d_count ( p ) ) ; } /* adds a new node at the end of the doubly linked list */ void d_append ( struct dnode **s, int num ) { struct dnode *r, *q = *s ; /* if the linked list is empty */ if ( *s == NULL ) { /*create a new node */ *s = malloc ( sizeof ( struct dnode ) ) ; ( *s ) -> prev = NULL ; ( *s ) -> data = num ; ( *s ) -> next = NULL ; } else { /* traverse the linked list till the last node is reached */ while ( q -> next != NULL ) q = q -> next ; /* add a new node at the end */ r = malloc ( sizeof ( struct dnode ) ) ; r -> data = num ; r -> next = NULL ; r -> prev = q ; q -> next = r ; } } /* adds a new node at the begining of the linked list */ void d_addatbeg ( struct dnode **s, int num ) { struct dnode *q ; /* create a new node */ q = malloc ( sizeof ( struct dnode ) ) ; /* assign data and pointer to the new node */ q -> prev = NULL ; q -> data = num ; q -> next = *s ; /* make new node the head node */ ( *s ) -> prev = q ; *s = q ; } /* adds a new node after the specified number of nodes */ void d_addafter ( struct dnode *q, int loc, int num ) { struct dnode *temp ; int i ; /* skip to desired portion */ for ( i = 0 ; i < loc ; i++ ) { q = q -> next ; /* if end of linked list is encountered */ if ( q == NULL ) { printf ( "\nThere are less than %d elements", loc ); return ; } } /* insert new node */ q = q -> prev ; temp = malloc ( sizeof ( struct dnode ) ) ; temp -> data = num ; temp -> prev = q ; temp -> next = q -> next ; temp -> next -> prev = temp ; q -> next = temp ; } /* displays the contents of the linked list */ void d_display ( struct dnode *q ) { printf ( "\n" ) ; /* traverse the entire linked list */ while ( q != NULL ) { printf ( "%2d\t", q -> data ) ; q = q -> next ; } } /* counts the number of nodes present in the linked list */ int d_count ( struct dnode * q ) { int c = 0 ; /* traverse the entire linked list */ while ( q != NULL ) { q = q -> next ; c++ ; } return c ; } /* deletes the specified node from the doubly linked list */ void d_delete ( struct dnode **s, int num ) { struct dnode *q = *s ; /* traverse the entire linked list */ while ( q != NULL ) { /* if node to be deleted is found */ if ( q -> data == num ) { /* if node to be deleted is the first node */ if ( q == *s ) { *s = ( *s ) -> next ; ( *s ) -> prev = NULL ; } else { /* if node to be deleted is the last node */ if ( q -> next == NULL ) q -> prev -> next = NULL ; else /* if node to be deleted is any intermediate node */ { q -> prev -> next = q -> next ; q -> next -> prev = q -> prev ; } free ( q ) ; } return ; /* return back after deletion */ } q = q -> next ; /* go to next node */ } printf ( "\n%d not found.", num ) ; }
Download All Data Structure Study Materials & ebook PDF