MCPcopy
hub / github.com/TheAlgorithms/Python / pop

Method pop

data_structures/queues/double_ended_queue.py:241–288  ·  view source on GitHub ↗

Removes the last element of the deque and returns it. Time complexity: O(1) @returns topop.val: the value of the node to pop. >>> our_deque1 = Deque([1]) >>> our_popped1 = our_deque1.pop() >>> our_popped1 1 >>> our_deque1 []

(self)

Source from the content-addressed store, hash-verified

239 self.appendleft(val)
240
241 def pop(self) -> Any:
242 """
243 Removes the last element of the deque and returns it.
244 Time complexity: O(1)
245 @returns topop.val: the value of the node to pop.
246 >>> our_deque1 = Deque([1])
247 >>> our_popped1 = our_deque1.pop()
248 >>> our_popped1
249 1
250 >>> our_deque1
251 []
252
253 >>> our_deque2 = Deque([1, 2, 3, 15182])
254 >>> our_popped2 = our_deque2.pop()
255 >>> our_popped2
256 15182
257 >>> our_deque2
258 [1, 2, 3]
259
260 >>> from collections import deque
261 >>> deque_collections = deque([1, 2, 3, 15182])
262 >>> collections_popped = deque_collections.pop()
263 >>> collections_popped
264 15182
265 >>> deque_collections
266 deque([1, 2, 3])
267 >>> list(our_deque2) == list(deque_collections)
268 True
269 >>> our_popped2 == collections_popped
270 True
271 """
272 # make sure the deque has elements to pop
273 assert not self.is_empty(), "Deque is empty."
274
275 topop = self._back
276 # if only one element in the queue: point the front and back to None
277 # else remove one element from back
278 if self._front == self._back:
279 self._front = None
280 self._back = None
281 else:
282 self._back = self._back.prev_node # set new back
283 # drop the last node, python will deallocate memory automatically
284 self._back.next_node = None
285
286 self._len -= 1
287
288 return topop.val
289
290 def popleft(self) -> Any:
291 """

Callers 4

dequeueMethod · 0.45
getMethod · 0.45
getMethod · 0.45

Calls 1

is_emptyMethod · 0.95

Tested by

no test coverage detected