Skip to main content

Linked List data structure| Insertion at the end

Introduction:
In this tutorial, we will insert a new node at the end of the list.

To insert a new node at the end of the list, we have to follow few steps:

step1: first of all we should have a linked list, and if we don't have the list, then we have to create the list first.

code for creating the list:

#include<bits/stdc++.h>
using namespace std;

struct Node{
int val;
struct Node *next;

};

int main(){

    int n;
    cout<<"enter the number of Nodes:";
    cin>>n;
    struct Node* head = NULL;
    struct Node* temp;
    int m;
    while(n--){
        cout<<"enter the data into nodes:";
        cin>>m;
        if(head==NULL){
            head = new Node();//creating a node
            head->val = m; // assigning value
            head->next=NULL;
            temp=head;//updating temp
        }
        else{
        struct Node *temp1 = new Node();//creating a node
        temp1->val = m;//assigning value
        temp1->next = NULL;
        temp->next = temp1; // linking temp with newly created node(temp1)
        temp=temp1;// shifting temp to newly created node(temp1)
        }
    }
}

now we have our list.

step2: Now we have to reach at the last node of previously created list. and to reach the last node we simply run a while loop.

struct Node *temp = head;

while(temp->next != NULL){
temp=temp->next;
}

let's understand this part:

first of all i created temp variable and point it to head. this step is neccessary, because if we traverse it like
while(head->next!=NULL){
head=head->next;
}
by using this piece of code we will reach at the last node, but now head is pointing to the last node and we will lost all node before the last node of list, cause we know that head is always the first node of the list. so we have to maintain our head. that'a why we are using temp variable, after using temp variable head will be at the first node and temp will reach at the last node after execution of while loop.

one point we should keep in mind, in linked list "next" field of last node is always null.

till now we have created our list and reach at the end of the list and head is pointing to the first node of the list and temp is pointing to the last node of the list.



step3: now create a new node which we will insert at the end of the list.

struct Node *newNode = new Node();//new node is created
newNode->val = 5;
newNode->next=NULL;

now we have new node also.

final step: In this step we will link our new node to last node of the list(where the temp is).

we know temp is at last node, and to link new node to last node of the list we will simply put the address of new node into the last node of the list. and we know that information about last node is currrently in our temp variable.
temp->next = newnode.

this means we have put the address of newnode into the next field of last node of the list.

now we have a node linked with our list.



full code:

#include<bits/stdc++.h>
using namespace std;

struct Node{
int val;
struct Node *next;
};

int main(){

    int n;
    cout<<"enter the number of Nodes:";
    cin>>n;
    struct Node* head = NULL;
    struct Node* temp;
    int m;
    while(n--){
        cout<<"enter the data into nodes:";
        cin>>m;
        if(head==NULL){
            head = new Node();//creating a node
            head->val = m; // assigning value
            head->next=NULL;
            temp=head;//updating temp
        }
        else{
        struct Node *temp1 = new Node();//creating a node
        temp1->val = m;//assigning value
        temp1->next = NULL;
        temp->next = temp1; // linking temp with newly created node(temp1)
        temp=temp1;// shifting temp to newly created node(temp1)
        }
    }
struct Node *temp = head;

while(temp->next != NULL){
temp=temp->next;
}

struct Node* newNode = new Node();
newNode->val = 5;
newNode->next = NULL;

temp->next = newNode();

while(head!=NULL){
cout<<head->val<<" ";
head=head->next;
}

}



Comments

Popular posts from this blog

Disjiont Set Union-Find Data Structure | Code In C++

 Introduction:  In this tutorial we are going to write full program of disjoint set union find advance data structure in c++.  Problem Description: Disjoint Set Union (DSU) is an advance data structure, which basically uses in graph algorithms to find cycles. Codes:  Method1: Brute Force #include<bits/stdc++.h> using namespace std; int find(int f,vector<int>&dsuf){     if(dsuf[f]==-1)         return f;     return find(dsuf[f],dsuf); } void union_op(int from, int to, vector<int>& dsuf){     dsuf[from]=to; } bool isCycle(vector<pair<int,int> >&edge_list, vector<int>&dsuf){     for(int i=0;i<edge_list.size();i++){         int parent1=find(edge_list[i].first,dsuf);         int parent2=find(edge_list[i].second,dsuf);         if(parent1==pare...

Target Sum | Backtracking Problem

Introduction: In this tutorial we are going to solve a problem "Target Sum" which is from leetcode. and believe me it's really a good problem to understand Backtracking(Recursion). and if you try to understand the problem as well as code you will get a clear picture of Backtracking. Problem Statement: Link To Problem You are given a list of non-negative integers, a1, a2, ..., an, and a target, S. Now you have 2 symbols + and - . For each integer, you should choose one from + and - as its new symbol. Find out how many ways to assign symbols to make sum of integers equal to target S. Input: nums is [1, 1, 1, 1, 1], S is 3. Output: 5 Explanation: -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 There are 5 ways to assign symbols to make the sum of nums be target 3. Solution: As given in question, we have two operation + and -. so we will make recursive call for + and - . and if we have sum as target and we have reached upto the last ind...

Group Anagrams solution with explanation:Leetcode solution

what is Anagrams? suppose we have two strings and the characters present in both of the strings are same. then both will be called anagram of each other. eg:" rat" and "art" both are anagram of each other. the characters present in both string are same. eg: "raat" and "art" these are not anagrams of each other. and the reason is that the frequency of "a" in "raat" is 2. while the frequency of "a" in "art" is 1. so these are not anagrams of each other. in short two strings will be anagram of each other if they have same characters and the count(frequency) of each and every character must be same in both strings. Solution: There are different ways to solve this question, so here we are going to use Hashmap to solve this question. cause whenever there is need to search we should go with the data structure which use balanced binary tress or hashing. and we know that Hashmap  uses balanced binary trees. so using...