博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CDays-2 习题二 (编写类Class,并实现简单的栈)及相关内容解析。Python 基础教程 Class...
阅读量:6509 次
发布时间:2019-06-24

本文共 2627 字,大约阅读时间需要 8 分钟。

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

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

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

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

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

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

class 
( ) :

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

根据栈的定义,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中,尝试运行。

让我们完成第二个功能,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!'

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

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

由Kaysin 原创,转载请保留地址:     

转载于:https://www.cnblogs.com/Kaysin/archive/2013/02/18/2915826.html

你可能感兴趣的文章
nginx的安装及基本配置,及多个域名服务
查看>>
Servlet访问postgresql数据库并提取数据显示在前端jsp页面
查看>>
不改一行代码定位线上性能问题
查看>>
定义运算符
查看>>
git管理
查看>>
idea演示
查看>>
Android第三十天
查看>>
告别暗黄皮肤变水嫩皮肤的8个小习惯
查看>>
[Big Data - Kafka] kafka学习笔记:知识点整理
查看>>
加强Eclipse代码自动提示的方法
查看>>
【HM】第4课:MySQL入门
查看>>
GNS3-地址重叠环境中部署IPsec
查看>>
exchange online 用户疑问之许可证和用户数据归档
查看>>
QImage Mat IplImage 之间的相互转换
查看>>
lsof命令详解
查看>>
使用eclipse与android studio 在开发自定义控件时的区别
查看>>
我的友情链接
查看>>
mysql学习笔记
查看>>
django 问题解决
查看>>
年年有鱼游戏Android源码项目
查看>>