python 데이터 구조의 스 택 구현

3318 단어
제목 설명
스 택 의 데이터 구 조 를 실현 하여 다음 과 같은 방법 을 가지 게 합 니 다. 1. 빈 스 택 을 만 들 고 1. 새로운 요 소 를 추가 합 니 다. 3. 탄 스 택 4. 스 택 정상 요소 5 로 돌아 가 스 택 의 빈 스 택 여 부 를 판단 합 니 다. 6. 스 택 으로 돌아 가 는 요소 갯 수 입 니 다.
방법 1: 배열 실현.
배열 시 뮬 레이 션 스 택 을 사용 할 때 스 택 공간 은 연속 적 인 공간 입 니 다.구체 적 인 사 고 는 배열 의 첫 번 째 요 소 를 스 택 바닥 으로 하고 요소 의 개 수 를 기록 하 며 이 원 리 를 이용 하여 스 택 의 조작 을 쉽게 완성 하 는 것 이다.
소스 코드

class Stack(object):
    """ """
    def __init__(self):
        self.data = []

    def isEmpty(self):
        """      """
        return self.data == []

    def peek(self):
        """      """
        return self.data[len(self.data) - 1]

    def size(self):
        """      """
        return len(self.data)

    def push(self, data):
        """  """
        self.data.append(data)

    def pop(self):
        """  """
        self.data.pop()

if __name__ == '__main__':
    #        
    stack = Stack()
    print(stack.size())
    print(" 0-10  ")
    for i in range(11):
        stack.push(i)
    print("       :", end=" ")
    print(stack.size())
    print("  3 ")
    for i in range(3):
        stack.pop()
    print("       :", end=" ")
    print(stack.size())
    #           ,        
    while stack.isEmpty() is not True:
        print(stack.peek(), end=" ")
        stack.pop()

방법 2: 링크 실현
선두 노드 의 링크 를 사용 하여 처음부터 새 노드 를 삽입 하면 스 택 의 생 성 을 완성 할 수 있 습 니 다.
소스 코드

class Node(object):
    """  """
    def __init__(self,data):
        self.data = data
        self.next = None

class Stack(object):
    """        """
    def __init__(self):
        self.data = None
        self.next = None

    def isEmpty(self):
        """      """
        if self.next is None:
            return True
        else:
            return False

    def size(self):
        """      """
        cur = self.next
        i = 0   #   
        while cur is not None:
            i += 1
            cur = cur.next
        return i
    def push(self, data):
        """  """
        cur = Node(data)
        cur.data = data
        cur.next = self.next
        self.next = cur

    def pop(self):
        """  """
        cur = self.next
        if cur is not None:
            self.next = cur.next
            return cur.data
        print("  ")

    def peek(self):
        """      """
        cur = self.next
        return cur.data

if __name__ == '__main__':
    #       
    stack = Stack()
    print(stack.size())
    print(" 0-10  ")
    for i in range(11):
        stack.push(i)
    print("       :", end=" ")
    print(stack.size())
    print("  3 ")
    for i in range(3):
        stack.pop()
    print("       :", end=" ")
    print(stack.size())
    #           ,        
    while stack.isEmpty() is not True:
        print(stack.peek(), end=" ")
        stack.pop()

다음으로 전송:https://www.cnblogs.com/tianyb/p/10986769.html

좋은 웹페이지 즐겨찾기