C# Custom LinkedList Push and Pop Methods - Learning C# - Part 3
In this article, we define our Push and Pop methods. Our Push method allows us to add an Inventory item to our list on the top of the stack. We define PopLifo and PopFifo (last in first out and first in first out) methods.
public int Push(string invCategory, string invItem) { // add the Inventory to the list LinkedList node = new LinkedList(); node.inventoryCategory = invCategory; node.inventoryItem = invItem; node.Next = Head; // set the Next pointer to the // last item previously added Head = node; // set the Head as the item just now added return size++; // increment the size of the list }
We create our Push method as public, and it returns the size of our list as an integer. We pass two parameters to our method: the category and item.
In our first statement, we create a new "node." Since we are making it a LinkedList type, that means it consists of its own category, item, and Next value. In our next statement, as we type the word "node." intellisense provides the different properties defined in the LinkedList, thus allowing us to easily populate these items. We set our node.inventoryCategory value, etc.
Our node.Next is assigned to our previously added node as stored in "Head." And our Head node is reassigned with the values we just entered.
We increment our size counter and return the value.
In our Pop methods, we aren't actually "deleting" anything. Let's take a look:
public void PopLifo() // LIFO { if (size > 0) { LinkedList node = Head; Head = node.Next; // assign pointer to the head to the previous second node size--; // decrement the counter } }
In our PopLifo method, we remove the last node added to the list. To do so, we first want to see if our size is greater than zero, using the ">" relational operator. If so, we create a new node and assign it to our "Head." We then reassign our Head, or top of the list, to point to the node that Head was pointing to, our "node.Next." Then we decrement our size of our list.
public void PopFifo() { if (size > 0) // don't allow to keep decrementing counter if list is empty size--; // decrement the counter to remove it from displaying in the list (won't traverse to this node) }
Removing our node from the "first in" node on the list is much simpler. We simply decrement our size by one so that when we traverse through the nodes we never hit it.
In Part 4 of our series we will Print our list to the screen.
- Download Source Code on CodePlex: CSLinkedList.zip
- C# Custom LinkedList Console Application and Abstract Base Class and Method - Learning C# - Part 1
- C# Custom LinkedList Derived Classes, Constructor Initializations - Learning C# - Part 2
- C# Custom LinkedList Push and Pop Methods - Learning C# - Part 3
- C# Custom LinkedList PrintLifo method and C# Operators - Learning C# - Part 4
- C# Custom LinkedList PrintFifo method and GetNode by Position - Learning C# - Part 5
- C# Custom LinkedList FindItems() method - Learning C# - Part 6
- C# Custom LinkedList Main() method - Learning C# - Part 7
[CSLINKEDLIST]