zoukankan      html  css  js  c++  java
  • CDays2 习题二 (编写类Class,并实现简单的栈)及相关内容解析。Python 基础教程 Class

    编写一个类,实现简单的栈。数据的操作按照先进后出(FILO)的顺序。主要成员函式为put(item),实现数据item插入栈中;get(),实现从栈中取一个数据。

    首先一个问题,类是什么。

    面向对象编程语言都有这么概念,可是类是什么东西福利君至今很迷茫,在这里说下自己的理解。

    Class 就是所谓的类,类是一种类似于头文件的东西,调用类以后可以执行类中的很多类中的函数定义,这个应该叫做继承,但是根据Class的定义,我们可以在调用中的程序中定义更多的内置函数,或者修改。通过类Classes的应用,我们可以快速的进行程序编写,省去了很多的麻烦。

    根据这个思想,我们来做这个题。

    首先,我们要定义 这个类的名字。使用语句:

    class <class name> ( ) :

    在之后,我们需要对这个类进行初始化。

    根据栈的定义,FILO,先进后出。我们可以在Python中用列表实现这个结构。

    我们需要定义栈头,最大栈尺寸。

    让我们先完成这些。

    class Kay_Stack(object):
        def __init__(self, max):
            '''
            初始栈头指针和清空栈
            @param max: 指定栈的最大长度
            '''
            self.head = -1
            self.stack = list( )
            self.max = max
            for i in range(self.max):        #清空栈空间
                self.stack.append(0)

    如果我们调用这个类,那么我们就可以得到一个空栈。

    执行未发现错误。

    让我们完成第一个功能,PUSH,压栈。

    定义函数push ( )

    def put(self, item):
            if self.head >= self.max:                       #判断当前栈是否满了
                return 'Push Error: The Stack is Overflow!'  #提示栈溢出
            else:
                self.head += 1                              #不满,则将item入栈,调整栈顶指针
                self.stack[self.head] = item                #输出栈顶指针所指元素
                print 'Push %s Success' % item

    我们把这个定义嵌入Class中,尝试运行。

    image

    让我们完成第二个功能,POP,出栈。

    出站操作就是把栈顶指针所指的元素输出,并在栈中删除该元素。

    def pop(self):
            if self.head <0 :       #判断栈是否为空。
                return 'Pop Error: The Stack is Empty!'
            else:
                self.head-=1                #移动栈顶指针
                return self.stack[self.head+1]    #返回偏移

    让我们完成第三个功能,判断栈是否为空。

    根据pop功能,我们只需要if第一段。

    def isEmpty(self):
            if self.head < 0:
                return 'The Stack is Empty!'
            return 'The Stack is not Empty!'

    有了这三个基本功能,其他的特性都可以根据这三个操作完成。

    给出完整类定义。

    class Kay_Stack(object):
        def __init__(self, max):
            self.head = -1
            self.stack = list()
            self.max = max
            for i in range(self.max):
                self.stack.append(0)
        def push(self,item):
            if self.head >= self.max:                       #判断当前栈是否满了
                return 'Push Error: The Stack is Overflow!'  #提示栈溢出
            else:
                self.head += 1                              #不满,则将item入栈,调整栈顶指针
                self.stack[self.head] = item                #输出栈顶指针所指元素
                print 'Push %s Success' % item
        def pop(self):
            if self.head <0 :       #判断栈是否为空。
                return 'Pop Error: The Stack is Empty!'
            else:
                self.head-=1                #移动栈顶指针
                return self.stack[self.head+1]    #返回偏移
        def isEmpty(self):
            if self.head < 0:
                return 'The Stack is Empty!'
            return 'The Stack is not Empty!'

    现在我们测试一下这个类的功能。我们先将它编译运行。

    然后在在命令行中输入命令,测试功能,截图如下。

    image

    由Kaysin 原创,转载请保留地址: http://kaysin.cnblogs.com     http://blog.ppzchina.com

  • 相关阅读:
    洛谷P5281 [ZJOI2019] Minimax搜索
    势函数
    Comet OJ [Contest #5] 迫真大游戏
    洛谷P3307 [SDOI2013] 项链
    洛谷P5985 [PA2019] Muzyka pop
    CF1205E Expected Value Again
    review
    CF891E Lust
    线性代数
    洛谷P4607 [SDOI2018] 反回文串
  • 原文地址:https://www.cnblogs.com/Kaysin/p/2915826.html
Copyright © 2011-2022 走看看