Mon Jun 25 2018

Singly Linked list

C Programming1937 views

File Name: singly-linkedlist.c

#include<stdio.h>
#include<stdlib.h>

/* Linked list structure */
struct linkedlist {
	int data;
	struct linkedlist *next;
} *node = NULL, *first = NULL, *last = NULL, *node1 = NULL;

/* Function for create/insert node in Linked list */
void insert() {

	/* Dynamic memory allocation */
	node = (struct linkedlist*)malloc(sizeof(struct linkedlist));
	printf("Enter value for the node:\n");
	scanf("%d",&node->data);
	if(first == NULL) {
		node->next = NULL;
		first = node;
		last = node;
		printf("Linked list Created!\n");
	}
	else {
		node->next = NULL;
		last->next = node;
		last = node;
		printf("Data Inserted in the Linked list!\n");
	}
}

/* Function for Display Linked list */
void display() {
	node = first;
	printf("List of data in Linked list\n");
	while(node != NULL) {
		printf("%d\n",node->data);
		node = node->next;
	}
}

/* Function for delete node from Linked list */
void delete() {
	int count = 0, number, i;
	node = node1 = first;
	for(node = first; node != NULL; node = node->next)
		count++;
	display();
	printf("\n%d nodes available here!\n", count);
	printf("Enter the node number which you want to delete:\n");
	scanf("%d", &number);
	if(number != 1) {
		if(number <= count) {
			for(i = 2; i <= number; i++)
				node = node->next;
			for(i = 2; i <= number-1; i++)
				node1 = node1->next;
			node1->next = node->next;
			node->next = NULL;
			free(node);
		}
		else
			printf("Invalid node number!\n");
	}
	else {
		first = node->next;
		free(node);
	}
	printf("Node has been deleted successfully!\n");							
}

int main() {
	int op = 0;
	while(op != 4) {
		printf("1. Insert     2. Delete    3. Display    4. Exit\n");
		printf("Enter your choice:\n");
		scanf("%d", &op);
		switch(op) {
			case 1:
				insert();
				break;
			case 2:
				delete();
				break;
			case 3:
				display();
				break;
			case 4:
				printf("Bye Bye!\n");
				exit(0);
				break;
			default:
				printf("Invalid choice!\n");
		}
	}
	return 0;
}




/* Output */
1. Insert2. Delete3. Display4. Exit
Enter your choice:
1

Enter value for the node:
5

Linked list Created!

1. Insert2. Delete3. Display4. Exit
Enter your choice:
1

Enter value for the node:
6

Data Inserted in the Linked list!

1. Insert2. Delete3. Display4. Exit
Enter your choice:
3

List of data in Linked list
5
6

1. Insert2. Delete3. Display4. Exit
Enter your choice:
2

List of data in Linked list
5
6

2 nodes available here!
Enter the node number which you want to delete:
2

Node has been deleted successfully!

1. Insert2. Delete3. Display4. Exit
Enter your choice:
4

Bye Bye!

We use cookies to improve your experience on our site and to show you personalised advertising. Please read our cookie policy and privacy policy.