C++ OOP: doubly linked list

Add new element to doubly linked list

Step 2: Add an element to the doubly linked list

To add an element to the doubly linked list, 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 links point to the new item.

C#(Csharp) Add an item to the empty doubly linked list  



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

C#(Csharp) Add a new element at the beginning of the doubly linked list  

 3. If the new element is to be added to the middle position of the list, you need to let a link move to the position that the new element will be placed in. Then exchange the links as shown below:

C#(Csharp) Add a new item in the middle of the doubly linked list  

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

C#(Csharp) Add the new item to the last of the doubly linked list  

//C# code to add a new element to the doubly linkedlist

public void insert(T val, int pos)

            {

                ListNode<T> newnode = new ListNode<T>(val);

                int inserted = 1;

                //empty list

                if (pfirst == null && plast == null)

                {

                    newnode.prev = null;

                    newnode.next = null;  

                    pfirst = newnode;

                    plast = newnode;

                   

                }

                //Insert at the beginning of the list

                else if (pos == 1)

                {

                    newnode.next = pfirst;

                    newnode.prev = null;

                    pfirst = newnode;

                   

                }

                //Insert in the middle of the list

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

                {

                    ListNode<T> ta;

                    ta = pfirst;

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

                    newnode.next = ta;

                    newnode.prev = ta.prev;

                    ta.prev.next = newnode;

                    ta.prev = newnode;

                   

                }

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

                {

                    newnode.next = null;

                    plast.next = newnode;

                    newnode.prev = plast;                   

                    plast = newnode;

 

                }

                else { inserted = 0; Console.WriteLine("Invalid position!"); }

                if (inserted != 0) Console.WriteLine("Inserted") ;

 

            }

}




Comments

Jason Chen comment

 Jason Chen

else if (pos == 1)
newnode.next = pfirst;
newnode.prev = null;
pfirst.prev=newnode; // It should have this statement;
pfirst = newnode;

Jason Chen


2016-12-15



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.