목록을 사용하여 스택을 구현합니다.

10861 단어 challengepython

문제 설명: 목록을 사용하여 푸시, 팝, 엿보기, isEmpty, 크기 메서드로 스택을 구현합니다.



테스트 케이스


  • 푸시
  • 빈 스택을 푸시합니다.
  • 비어 있지 않은 스택에 푸시


  • 빈 스택에서 팝 --> 없음.
  • 비어 있지 않은 스택에서 팝합니다. --> 값

  • 엿보다
  • 빈 스택 엿보기 --> 없음.
  • 비어 있지 않은 스택을 엿봅니다. --> 값

  • 비어있다
  • 빈 스택의 isEmpty --> True
  • 비어 있지 않은 스택의 isEmpty --> False입니다.

  • 사이즈
  • 빈 스택의 크기 --> 없음.
  • 비어 있지 않은 스택의 크기입니다. --> 값


  • 연산


  • 푸시
  • 목록 끝에 새 값을 추가합니다.


  • 스택이 비어 있으면,
  • 반환 없음

  • 그 외,
  • 목록 끝에서 요소를 팝니다.
  • 요소를 반환합니다.


  • 엿보다
  • 스택이 비어 있으면,
  • 반환 없음

  • 그 외,
  • 목록의 마지막 요소를 반환합니다.


  • 비어있다
  • 스택이 비어 있으면,
  • True 반환

  • 그 외,
  • False 반환


  • 사이즈
  • 목록의 길이를 반환합니다.


  • 시간과 공간 복잡성


  • 푸시
  • 시간 복잡도: O(1)
  • 공간 복잡도: O(1)


  • 시간 복잡도: O(1)
  • 공간 복잡도: O(1)

  • 엿보다
  • 시간 복잡도: O(1)
  • 공간 복잡도: O(1)

  • 비어있다
  • 시간 복잡도: O(1)
  • 공간 복잡도: O(1)

  • 사이즈
  • 시간 복잡도: O(1)
  • 공간 복잡도: O(1)




  • 암호



    class Stack(object):
        def __init__(self):
            self.items = []
    
        def isEmpty(self):
            return self.items == []
    
        def push(self, data):
            self.items.append(data)
    
        def pop(self):
            if self.isEmpty():
                return None
            return self.items.pop()
    
        def peek(self):
            if self.isEmpty():
                return None
            return self.items[-1]
    
        def size(self):
            return len(self.items)
    

    단위 테스트



    import unittest
    from stackLists import Stack
    
    
    class TestStackLists(unittest.TestCase):
        def test_end_to_end(self):
            print('Test: Empty stack')
            stack = Stack()
            self.assertEqual(stack.peek(), None)
            self.assertEqual(stack.pop(), None)
    
            print('Test: One element')
            stack = Stack()
            stack.push(5)
            self.assertEqual(stack.size(), 1)
            self.assertEqual(stack.pop(), 5)
            self.assertEqual(stack.peek(), None)
    
            print('Test: More than one element')
            stack = Stack()
            stack.push(1)
            stack.push(2)
            stack.push(3)
            self.assertEqual(stack.size(), 3)
            self.assertEqual(stack.pop(), 3)
            self.assertEqual(stack.peek(), 2)
            self.assertEqual(stack.pop(), 2)
            self.assertEqual(stack.peek(), 1)
            self.assertEqual(stack.isEmpty(), False)
            self.assertEqual(stack.pop(), 1)
            self.assertEqual(stack.peek(), None)
            self.assertEqual(stack.isEmpty(), True)
            print('Success: test_end_to_end')
    
    
    def main():
        test = TestStackLists()
        test.test_end_to_end()
    
    
    if __name__ == '__main__':
        main()
    

    Github repo

    해피코딩!! 😃

    좋은 웹페이지 즐겨찾기