面向对象编程(二)三大特性(练习)

1.栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈),允许进行操作的一端称为“栈顶”,
另一固定端称为“栈底”,当栈中没有元素时称为“空栈”。向一个栈内插入元素称为是进栈,push;
从一个栈删除元素称为是出栈,pop。特点 :后进先出(LIFO)。
栈的封装

class Stack(object):
    def __init__(self):
        self.stack = []
    def __len__(self):
        return len(self.stack)
    def push(self, item):
        self.stack.append(item)
        print('元素【%s】入栈成功' %(item))
    def pop(self):
        if not self.is_empty():
            item = self.stack.pop()
            print('元素【%s】出栈成功' %(item))
        # else:
        #     raise Exception('栈为空')
    def top(self):
        if not self.is_empty():
            item = self.stack[-1]
            print('栈顶元素为:【%s】' %(item))
        # else:
        #     raise Exception('栈为空')
    def length(self):
        return len(self.stack)
    def is_empty(self):
        return len(self.stack) == 0


stack = Stack()
stack.push(5)
stack.push(3)
print(len(stack))
stack.pop()
stack.is_empty()
stack.pop()
stack.is_empty()
stack.pop()
stack.push(7)
stack.push(9)
stack.pop()
stack.top()
print(len(stack))
stack.pop()
stack.push(6)
stack.push(8)
stack.pop()

面向对象编程(二)三大特性(练习)_第1张图片
2.队列是限制在一端进行插入操作和另一端删除操作的线性表,允许进行插入操作的一端称为“队尾”,
允许进行删除操作的一端称为“队头”,,当队列中没有元素时称为“空队”。特点 :先进先出(FIFO)。
队列的封装

class Queue(object):
    def __init__(self):
        self.__queue = []
    def __len__(self):
        #求队列长度
        return len(self.__queue)
    def is_empty(self):
        #判断队列是否为空
        return len(self.__queue) == 0
    def enqueue(self,item):
        #入队操作
        self.__queue.append(item)
        print('元素【%s】入对成功' %(item))
    def first(self):
        if not self.is_empty():
            item = self.__queue[0]
            print('对头元素为:【%s】' % (item))
        else:
            raise Exception('队列为空')
    def dequeue(self):
        if not self.is_empty():
            item = self.__queue.pop(0)
            print("元素【%s】出对成功" %(item))
        else:
            raise Exception('队列为空')
    def display(self):
        return self.__queue
queue = Queue()
queue.enqueue(5)
queue.enqueue(3)
print(queue.display())
print(len(queue))
queue.dequeue()
queue.is_empty()
queue.dequeue()
queue.is_empty()
# queue.dequeue()
queue.enqueue(7)
queue.enqueue(9)
queue.first()
queue.enqueue(4)
print(len(queue))
queue.dequeue()

面向对象编程(二)三大特性(练习)_第2张图片

你可能感兴趣的:(面向对象编程)