-1

I have very basic concepts of linked list with C++. Here I have nodes linked, but the idea is to delete the last node, how do I achieve this?

This is the portion of code aimed to delete the last node:

//deleting node here
age* temp = head;
temp->next->next;//!=NULL
temp = temp->next;
//temp->next = NULL;
delete temp;
#include<iostream>
using namespace std;

struct age{
    int a;
    age *next;
};

age *head,*current,*node1,*node2,*ona;

int main(){
    //creating a first node
    age *node1=new age();
    head=node1;
    node1->a=10;
    
    //creating a second node
    age *node2=new age();
    node2->a=20;
    //link nodes
    node1->next=node2;
    node2->next=NULL;
    
    //insertion of node ona between node 1 and node 2
    ona=new age;
    ona->a=15;
    ona->next=node1->next;
    node1->next=ona;
    
    //deleting node here
    age* temp = head;
    temp->next->next;//!=NULL
    temp = temp->next;
    //temp->next = NULL;
    delete temp;
    
    //displaying the otput
    current=head;
    while(current!=NULL){
        cout<<current->a<<endl;
        current=current->next;
    }
}
Remy Lebeau
  • 555,201
  • 31
  • 458
  • 770
willy
  • 249
  • 3
  • 12

1 Answers1

0

I suggest to have a look here:

For plain C development: https://www.learn-c.org/en/Linked_lists

On this site all standard methods for handling linked lists are explained and you can find code snippets for every operation.

For CPP development: https://www.codesdope.com/blog/article/c-deletion-of-a-given-node-from-a-linked-list-in-c/

On this site you can find an example coded in CPP OOP style.

I change the C example a little bit to fit your code example:

void remove_last(age * head) {
/* if there is only one item in the list, remove it */
if (head->next == NULL) {
    delete head;
    head = NULL;
    return;
}

/* get to the second to last node in the list */
node_t * current = head;
while (current->next->next != NULL) {
    current = current->next;
}

/* now current points to the second to last item of the list, so let's remove current->next */
delete(current->next);
current->next = NULL;
}