C++ exercises solutions: add element to list


Circularly Linked List

Add element to circularly linked list

Step 2: Add an element to the circularly linked list

To add an element to the circularly linkedlist, you need to consider 4 things:

1. When the list is empty, to add a new element to the list, you only let the pfirst and plast pointers point to the new item.

C++ Add an item to the empty list  



2.If the new element is to be added to the beginning of  the list, you will need to let the link of the new item points to the pfirst and then update the pfirst to point to the new item.

C++ Add a new element at the beginning of the list  

 3. If the new element is to be added to the middle position of the list, you need to let a pointer point to the position immediately before the position that the new element will be placed in.

C++ Add a new item in the middle of the list  

4. If the new element is to be added to the last of the list, you need to let the link of the plast point to the new element then update the plast to point the new element.

C++ Add the new item to the last of the list  

Note: After the new item was inserted to the list, the next link of the plast is pointed to the pfirst. By doing this, all items of the list are linked together circularly.

//C++ code to add a new element to the circularly linkedlist

void Insert (int val,int pos)

{

  int t,val_pos=1;

  ListElem *item;//new element to be inserted

  item=(ListElem *)malloc(sizeof(ListElem)); //allocate space

  if(!item) {cout<<"Memory problem..."<<endl; exit(100);}

     item->data=val;

   //insert a new item to the empty Circularly Linked List

   if(pfirst==NULL && plast==NULL){

  //The first and last item point to the new item when they are   null--empty Circularly Linked List.

        pfirst=item;

        plast=item;

        cout<<"Inserted:"<<item->data<<"\n";

                        }

  //insert a new item at the beginning of the Circularly Linked List

  else if(pos==1)

  {

     item->next=pfirst;

     pfirst=item;

    }

  //insert a new item between items

  else if(pos>1 && pos<=countitem(pfirst)){

     ListElem *ta;

     ta=pfirst;

    for(t=1;t<pos-1;t=t+1){ta=ta->next;} //move to the insertion point

     item->next=ta->next;

    ta->next=item;

  }

  //insert a new item at the end of the Circularly Linked List

  else if(pos==countitem(pfirst)+1){

     plast->next=item;

     plast=item;

     cout<<"Inserted:"<<item->data<<"\n";

   }

   //show message if position is not valid.

   else {

            val_pos=0;

            cout<<"Invalid position! Position must be between 1 and "<<countitem(pfirst)+2<<"\n";

   }

  if(val_pos!=0 && plast!=NULL) plast->next=pfirst; //let the plast points to the pfirst to make the list curcularly linked

}




Comments

Catlots comment

 Catlots

else {

val_pos=0;

cout<<"Invalid position! Position must be between 1 and "<<countitem(pfirst)+2<<"\n";

}
what does it mean? Plus 2 why?


2017-01-09



This website intents to provide free and high quality tutorials, examples, exercises and solutions, questions and answers of programming and scripting languages:
C, C++, C#, Java, VB.NET, Python, VBA,PHP & Mysql, SQL, JSP, ASP.NET,HTML, CSS, JQuery, JavaScript and other applications such as MS Excel, MS Access, and MS Word. However, we don't guarantee all things of the web are accurate. If you find any error, please report it then we will take actions to correct it as soon as possible.