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 list
ExplanationIn 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 JAVA
public 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#
|