F How To Delete a Node From a Simple Doubly Linked List | CodeTheta

### How To Delete a Node From a Simple Doubly Linked List

January 08, 2014

Here is a link list program this program used only malloc function. If you find any compilation error please do comment or email me

```/* Delete a Node From a Simple Doubly Linked List */
/* D_nodes_frm_l_list.C */
/* http://native-code.blogspot.com */

# include <stdio.h>
# include <malloc.h>

struct Double
{
char info;
struct Double *next;
struct Double *previous;
};

int num ;
struct Double start;

void display (struct Double *);

/* Function creates a doubly linked list */

{
char ch;
start.next = NULL;  /* Empty list */
start.previous = NULL;
node = &start;      /* Point to the start of the list */

num = 0;

printf("\n Input choice n for break: ");
ch = getchar();

while(ch != 'n')
{
node->next = (struct Double *) malloc(sizeof(struct Double));
node->next->previous = node;
node = node->next;
printf("\n Input the values of the node: %d:", (num+1));
scanf("%d",  &node->info);
node->next = NULL;
fflush(stdin);
printf("\n Input choice n for break: ");
ch = getchar();
num ++;
}
printf("\n Total nodes = %d", num);
}

/* Function delete */

{
int delete_node;
int search_counter = 0;

printf("\n Input the node number to which you want delete: ");
scanf("%d", &delete_node);

node = start.next;
if ( node == NULL)
{
printf("\n Underflow\n");
printf("\n List is empty\n");
}
else

while(node)
{
if((search_counter + 1) == delete_node)
{
node->previous->next = node->next ;
node->next->previous = node->previous ;
free(node);
}
else
{
node = node->next;

}
search_counter++;
}
}

/* Display the list */

void display(struct Double *node)
{
node = start.next;

while (node)
{
printf("\n 0x%x", node);
printf("  %d", node->info);
node = node->next;
}
}

/* Function main */

void main()
{
struct Double *node = (struct Double *) malloc(sizeof(struct Double));
printf("\n Created linked list is as follows\n");
display(node);