class ArrayReversal:
def __init__(self, arr):
self.arr = arr
def reverse(self):
left = 0
right = len(self.arr) - 1
while left < right:
# Swap elements at left and right
self.arr[left], self.arr[right] = self.arr[right], self.arr[left]
left += 1 # Move left pointer inward
right -= 1 # Move right pointer inward
def __str__(self):
return ' -> '.join(str(x) for x in self.arr) + ' -> null'
# Driver code
array = [1, 2, 3, 4, 5]
reversal = ArrayReversal(array)
print("Before reversal:")
print(reversal)
reversal.reverse()
print("After reversal:")
print(reversal)loop until pointers meet or cross to cover all pairs
self.arr[left], self.arr[right] = self.arr[right], self.arr[left]
swap elements at left and right to reverse order
left += 1 # Move left pointer inward
advance left pointer to next element
right -= 1 # Move right pointer inward
move right pointer inward to next element
Before reversal:
1 -> 2 -> 3 -> 4 -> 5 -> null
After reversal:
5 -> 4 -> 3 -> 2 -> 1 -> null