In visual basic, Stack is useful to represent a collection of objects which store elements in LIFO (Last in, First out) style i.e. the element which added last will be the first to come out.
Generally, stacks are useful when we want to access elements from the collection in last-in-first-out style and we can store multiple nulls and duplicate values in the stack based on our requirements.
By using Push() and Pop() / Peek() methods, we can add or retrieve elements from the stack. Here, the Push() method is useful to add elements to the stack and the Pop() / Peek() method is useful to retrieve elements from the stack.
Following is the pictorial representation of the stack process flow in a visual basic programming language.
Generally, visual basic will support both generic and non-generic types of stacks. Here, we will learn about non-generic queue collections by using the System.Collections namespace so we can add elements of different data types.
As discussed, the collection is a class so to define a stack, we must need to declare an instance of the stack class before we perform any operations like add, delete, etc. like as shown below.
Dim stk As Stack = New Stack();
If you observe the above stack declaration, we created a new stack (stk) with an instance of stack class without specifying any size.
The following are some of the commonly used properties of the stack in a visual basic programming language.
Property | Description |
---|---|
Count | It will return the total number of elements in the stack. |
IsSynchronized | It is used to get a value to indicate that access to stack is synchronized (thread-safe) or not. |
Following are some of the commonly used methods of the stack to perform operations like add, delete, etc. on elements of the stack in a visual basic programming language.
Method | Description |
---|---|
Push | It is used to insert an object at the top of the stack. |
Pop | It will remove and return an object at the top of the stack. |
Clear | It will remove all the elements from the stack. |
Clone | It will create a shallow copy of stack. |
Contains | It is used to determine whether an element exists in a stack or not. |
Peek | It is used to return a top element from the stack. |
Here, we are going to use a non-generic collection of the stack so we can add elements of different data types to the stack using Push() method. Following is the example of adding and accessing the elements of the stack in visual basic.
Module Module1
Sub Main(ByVal args As String())
' Create and initialize a stack
Dim stk As Stack = New Stack()
stk.Push("Welcome")
stk.Push("Tutlane")
stk.Push(20.5F)
stk.Push(10)
stk.Push(Nothing)
stk.Push(100)
Console.WriteLine("Number of Elements in Stack: {0}", stk.Count)
Console.WriteLine("******Stack Elements******")
' Access Stack Elements
For Each item In stk
Console.WriteLine(item)
Next
Console.ReadLine()
End Sub
End Module
If you observe the above example, we created a new stack (stk) and added different data type elements to the stack (stk) using Push() method and we used For Each loop to iterate through the stack to get elements from it.
When we execute the above visual basic program, we will get the result as shown below.
If you observe the above result, we got elements from the stack in LIFO (last in, first out) order.
As discussed, the stack Pop() method will always remove and return a top element of the queue. Following is the example of accessing stack elements using the Pop() method in visual basic.
Module Module1
Sub Main(ByVal args As String())
' Create and initialize a stack
Dim stk As Stack = New Stack()
stk.Push("Welcome")
stk.Push("Tutlane")
stk.Push(20.5F)
stk.Push(10)
stk.Push(Nothing)
stk.Push(100)
Console.WriteLine("Number of Elements in Stack: {0}", stk.Count)
Console.WriteLine("******Stack Elements******")
' Access Stack Elements
While stk.Count > 0
Console.WriteLine(stk.Pop())
End While
Console.WriteLine("Number of Elements in Stack: {0}", stk.Count)
Console.ReadLine()
End Sub
End Module
If you observe the above example, we are accessing stack elements by using Pop() method and calling a Pop method on the empty stack will throw an exception (InvalidOperation) so to avoid that situation we are checking whether the count of stack elements are greater than zero or not using while loop.
When we execute the above visual basic program, we will get the result as shown below.
If you observe the above result, every time the Pop() method has removed and returned a top element of the stack that’s the reason at the end we got a count of stack elements as 0.
In case, if you want to remove all the elements from the stack, then you need to use the Clear() method.
As discussed, the stack Peek() method will always return a last (top-most) inserted element of the stack. Following is the example of accessing stack elements using Peek() method in visual basic.
Module Module1
Sub Main(ByVal args As String())
' Create and initialize a stack
Dim stk As Stack = New Stack()
stk.Push("Welcome")
stk.Push("Tutlane")
stk.Push(20.5F)
stk.Push(10)
stk.Push(Nothing)
stk.Push(100)
Console.WriteLine("Number of Elements in Stack: {0}", stk.Count)
Console.WriteLine("******Stack Elements******")
' Access Stack Elements
Console.WriteLine(stk.Peek())
Console.WriteLine(stk.Peek())
Console.WriteLine(stk.Peek())
Console.WriteLine("Number of Elements in Stack: {0}", stk.Count)
Console.ReadLine()
End Sub
End Module
If you observe the above example, we are accessing stack elements by using the Peek() method.
When we execute the above visual basic program, we will get the result as shown below.
If you observe the above result, every time the Peek() method has returned a last (top-most) element of the queue without removing any element that’s the reason at the end also the stack elements count is same as starting of the stack.
In visual basic, by using stack Contains() method we can check whether an element exists in the stack or not. In case, if the element found in the stack, it will return True otherwise False.
Following is the example of using stack Contains() method to check whether an item exists in the stack or not in visual basic.
Module Module1
Sub Main(ByVal args As String())
' Create and initialize a stack
Dim stk As Stack = New Stack()
stk.Push("Welcome")
stk.Push("Tutlane")
stk.Push(20.5F)
stk.Push(10)
stk.Push(Nothing)
stk.Push(100)
Console.WriteLine("******Stack Example******")
Console.WriteLine("Contains Element 4: {0}", stk.Contains(4))
Console.WriteLine("Contains Element 100: {0}", stk.Contains(100))
Console.WriteLine("Contains Key 'Hello': {0}", stk.Contains("Hello"))
Console.ReadLine()
End Sub
End Module
If you observe the above example, we used Contains() method to check for particular elements that exist in the stack (stk) or not.
When we execute the above visual basic program, we will get the result as shown below.
The following are the important points which needs to remember about the stack in visual basic.