• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 285
  • Last Modified:

setting value to a pointer of a linklist

I have made the following linklist. How can I create a loop

say for example if I want to set first->next->next=something;

then I want to set first->next->next->next=something;

I hope I am clear enough, what I need to do is replace ->next .. by a loop so if need 3 ->next I just run a for loop 3 times. I am doing it because I need to add a node at the nth position of my list; If the list already has some elements. For example the function addnth which I have tried to implement. The function is generic to add a node at the 2nd position from head. But I need it to be versatile enough to add at any location. However I am unable to do that because of difficulty in moving to first->next.....I even tried using pointer to pointer but was unable to do that.

_______________________________________
struct node
{
   int x;
   node *next;

};


class linklist
{

      node *first;
      int length;
public:
      linklist()
      {
            first= NULL;
            length=0;
      }

                void addlink(int d);
      void display();
      void addnth(int d,int n);

};

void linklist::addnth(int d,int n)

{

      node *current=first;
      node *temp=0;      
      node **temp1=0;
      node *m=0;



      for (int i=1;i<3;i++)
      {
      
            current=current->next;
      }

      temp=current;

                node *newlink=new node;

      newlink->x=d;

      first->next->next=newlink;
      
      /*
      m=first->next->next;
      temp1=&m;
               *temp1=newlink;
               */

    newlink->next=temp;


}
0
anshuma
Asked:
anshuma
  • 2
1 Solution
 
Jaime OlivaresSoftware ArchitectCommented:
I think will be no errors. Please advice.

void linklist::addnth(int d,int n)
{
    node *current=first;
    node *newNode= new node;
    newNode->x = d;
 
    if (n==1) {    // special case, first
        newNode->next = first;
       first = newNode;
       return;          
    }

    for (int i=1;i<(n-1);i++) {
       if (current->next)    // this statement prevent outbound
          current=current->next;
    }

    newNode->next = current->next;
    current->next = newNode;            
}
0
 
anshumaEngineeringAuthor Commented:
Great it worked but I was trying to do the same in my code. Could you point me to my folly. How can I solve this with a pointer to pointer approach.

-regards
0
 
Jaime OlivaresSoftware ArchitectCommented:
Sorry, I can not undestand why do you want to use pointer to pointer.
I doesn't make much sense to me.
0

Featured Post

Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now