C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Program to insert a new node at the beginning of the singly linked listExplanationIn this program, we will create a singly linked list and add a new node at the beginning of the list. To accomplish this task, we will store head to a temporary node temp. Make newly added node as the new head of the list. Then, add temp (old head) after new head. Consider the above list; node 1 represents the head of the original list. Let node New be the new node which needs to be added at the beginning of the list. Node temp will point to head, i.e. 1. Make New as the new head of the list and add temp after new head such that node next to New will be 1. Algorithm
SolutionPython#Represent a node of the singly linked list class Node: def __init__(self,data): self.data = data; self.next = None; class InsertStart: #Represent the head and tail of the singly linked list def __init__(self): self.head = None; self.tail = None; #addAtStart() will add a new node to the beginning of the list def addAtStart(self, data): #Create a new node newNode = Node(data); #Checks if the list is empty if(self.head == None): #If list is empty, both head and tail will point to new node self.head = newNode; self.tail = newNode; else: #Node temp will point to head temp = self.head; #newNode will become new head of the list self.head = newNode; #Node temp(previous head) will be added after new head self.head.next = temp; #display() will display all the nodes present in the list def display(self): #Node current will point to head current = self.head; if(self.head == None): print("List is empty"); return; print("Adding nodes to the start of the list: "); while(current != None): #Prints each node by incrementing pointer print(current.data ), current = current.next; sList = InsertStart(); #Adding 1 to the list sList.addAtStart(1); sList.display(); #Adding 2 to the list sList.addAtStart(2); sList.display(); #Adding 3 to the list sList.addAtStart(3); sList.display(); #Adding 4 to the list sList.addAtStart(4); sList.display(); Output: Adding nodes to the start of the list: 1 Adding nodes to the start of the list: 2 1 Adding nodes to the start of the list: 3 2 1 Adding nodes to the start of the list: 4 3 2 1 C#include <stdio.h> //Represent a node of the singly linked list struct node{ int data; struct node *next; }; //Represent the head and tail of the singly linked list struct node *head, *tail = NULL; //addAtStart() will add a new node to the beginning of the list void addAtStart(int data) { //Create a new node struct node *newNode = (struct node*)malloc(sizeof(struct node)); newNode->data = data; newNode->next = NULL; //Checks if the list is empty if(head == NULL) { //If list is empty, both head and tail will point to new node head = newNode; tail = newNode; } else { //Node temp will point to head struct node *temp = head; //newNode will become new head of the list head = newNode; //Node temp(previous head) will be added after new head head->next = temp; } } //display() will display all the nodes present in the list void display() { //Node current will point to head struct node *current = head; if(head == NULL) { printf("List is empty\n"); return; } printf("Adding nodes to the start of the list: \n"); while(current != NULL) { //Prints each node by incrementing pointer printf("%d ", current->data); current = current->next; } printf("\n"); } int main() { //Adding 1 to the list addAtStart(1); display(); //Adding 2 to the list addAtStart(2); display(); //Adding 3 to the list addAtStart(3); display(); //Adding 4 to the list addAtStart(4); display(); return 0; } Output: Adding nodes to the start of the list: 1 Adding nodes to the start of the list: 2 1 Adding nodes to the start of the list: 3 2 1 Adding nodes to the start of the list: 4 3 2 1 JAVApublic class InsertStart { //Represent a node of the singly linked list class Node{ int data; Node next; public Node(int data) { this.data = data; this.next = null; } } //Represent the head and tail of the singly linked list public Node head = null; public Node tail = null; //addAtStart() will add a new node to the beginning of the list public void addAtStart(int data) { //Create a new node Node newNode = new Node(data); //Checks if the list is empty if(head == null) { //If list is empty, both head and tail will point to new node head = newNode; tail = newNode; } else { //Node temp will point to head Node temp = head; //newNode will become new head of the list head = newNode; //Node temp(previous head) will be added after new head head.next = temp; } } //display() will display all the nodes present in the list public void display() { //Node current will point to head Node current = head; if(head == null) { System.out.println("List is empty"); return; } System.out.println("Adding nodes to the start of the list: "); while(current != null) { //Prints each node by incrementing pointer System.out.print(current.data + " "); current = current.next; } System.out.println(); } public static void main(String[] args) { InsertStart sList = new InsertStart(); //Adding 1 to the list sList.addAtStart(1); sList.display(); //Adding 2 to the list sList.addAtStart(2); sList.display(); //Adding 3 to the list sList.addAtStart(3); sList.display(); //Adding 4 to the list sList.addAtStart(4); sList.display(); } } Output: Adding nodes to the start of the list: 1 Adding nodes to the start of the list: 2 1 Adding nodes to the start of the list: 3 2 1 Adding nodes to the start of the list: 4 3 2 1 C#using System; public class CreateList { //Represent a node of the singly linked list public class Node<T>{ public T data; public Node<T> next; public Node(T value) { data = value; next = null; } } public class InsertStart<T>{ //Represent the head and tail of the singly linked list public Node<T> head = null; public Node<T> tail = null; //addAtStart() will add a new node to the beginning of the list public void addAtStart(T data) { //Create a new node Node<T> newNode = new Node<T>(data); //Checks if the list is empty if(head == null) { //If list is empty, both head and tail will point to new node head = newNode; tail = newNode; } else { //Node temp will point to head Node<T> temp = head; //newNode will become new head of the list head = newNode; //Node temp(previous head) will be added after new head head.next = temp; } } //display() will display all the nodes present in the list public void display() { //Node current will point to head Node<T> current = head; if(head == null) { Console.WriteLine("List is empty"); return; } Console.WriteLine("Adding nodes to the start of the list: "); while(current != null) { //Prints each node by incrementing pointer Console.Write(current.data + " "); current = current.next; } Console.WriteLine(); } } public static void Main() { InsertStart<int> sList = new InsertStart<int>(); //Adding 1 to the list sList.addAtStart(1); sList.display(); //Adding 2 to the list sList.addAtStart(2); sList.display(); //Adding 3 to the list sList.addAtStart(3); sList.display(); //Adding 4 to the list sList.addAtStart(4); sList.display(); } } Output: Adding nodes to the start of the list: 1 Adding nodes to the start of the list: 2 1 Adding nodes to the start of the list: 3 2 1 Adding nodes to the start of the list: 4 3 2 1 PHP<!DOCTYPE html> <html> <body> <?php //Represent a node of singly linked list class Node{ public $data; public $next; function __construct($data){ $this->data = $data; $this->next = NULL; } } class InsertStart{ //Represent the head and tail of the singly linked list public $head; public $tail; function __construct(){ $this->head = NULL; $this->tail = NULL; } //addAtStart() will add a new node to the beginning of the list function addAtStart($data) { //Create a new node $newNode = new Node($data); //Checks if the list is empty if($this->head == null) { //If list is empty, both head and tail will point to new node $this->head = $newNode; $this->tail = $newNode; } else { //Node temp will point to head $temp = $this->head; //newNode will become new head of the list $this->head = $newNode; //Node temp(previous head) will be added after new head $this->head->next = $temp; } } //display() will display all the nodes present in the list function display() { //Node current will point to head $current = $this->head; if($this->head == NULL) { print("List is empty <br>"); return; } print("Adding nodes to the start of the list: <br>"); while($current != NULL) { //Prints each node by incrementing pointer print($current->data . " "); $current = $current->next; } print("<br>"); } } $sList = new InsertStart(); //Adding 1 to the list $sList->addAtStart(1); $sList->display(); //Adding 2 to the list $sList->addAtStart(2); $sList->display(); //Adding 3 to the list $sList->addAtStart(3); $sList->display(); //Adding 4 to the list $sList->addAtStart(4); $sList->display(); ?> </body> </html> Output: Adding nodes to the start of the list: 1 Adding nodes to the start of the list: 2 1 Adding nodes to the start of the list: 3 2 1 Adding nodes to the start of the list: 4 3 2 1
Next Topic#
|