题目:

基于元素相等操作“==”定义一个单链表的相等比较函数。另请基于字典序的概念,为链表定义大于,小于,大于等于,小于等于的判断

 class LList:

     """
省略已实现部分
""" #根据索引获得该位置的元素
def __getitem__(self, key):
if not isinstance(key, int):
raise TypeError
if 0<=key<len(self):
p = self._head
num = -1
while p:
num += 1
if key == num:
return p.elem
else:
p = p.next
else:
raise IndexError #判断两个列表是否相等 ==
def __eq__(self, other):
#两个都为空列表 则相等
if len(self)==0 and len(other)==0:
return True
#两个列表元素个数相等 当每个元素都相等的情况下 两个列表相等
elif len(self) == len(other):
for i in range(len(self)):
if self[i] == other[i]:
pass
else:
return False
#全部遍历完后则两个列表相等
return True
#两个列表元素个数不相等 返回Fasle
else:
return False
#判断两个列表是否不相等 !=
def __ne__(self, other):
if self.__eq__(other):
return False
else:
return True
# >
def __gt__(self, other):
l1 = len(self)
l2 = len(other)
if not isinstance(other, LList):
raise TypeError
# 1.len(self) = len(other)
if l1 == l2:
for i in range(l1):
if self[i] == other[i]:
continue
elif self[i] < other[i]:
return False
else:
return True
#遍历完都相等的话说明两个列表相等 所以返回False
return False
# 2.len(self) > len(other)
if l1 > l2:
for i in range(l2):
if self[i] == other[i]:
continue
elif self[i] < other[i]:
return False
else:
return True
#遍历完后前面的元素全部相等 则列表个数多的一方大
#if self[l2-1] == other[l2-1]:
return True
# 3.len(self) < len(other)
if l1 < l2:
for i in range(l1):
if self[i] == other[i]:
continue
elif self[i] < other[i]:
return False
else:
return True
#遍历完后前面的元素全部相等 则列表个数多的一方大
#if self[l2-1] == other[l2-1]:
return False
# <
def __lt__(self, other):
#列表相等情况下>会返回False,则<这里判断会返回True,有错误.所以要考虑在==的情况下也为False
if self.__gt__(other) or self.__eq__(other):
return False
else:
return True
# >=
def __ge__(self, other):
"""
if self.__eq__(other) or self.__gt__(other):
return True
else:
return False
"""
#大于等于和小于是完全相反的,所以可以依靠小于实现
if self.__lt__(other):
return False
else:
return True
# <=
def __le__(self, other):
"""
if self.__eq__(other) or self.__lt__(other):
return True
else:
return False
"""
##小于等于和大于是完全相反的,所以可以依靠大于实现
if self.__gt__(other):
return False
else:
return True

数据结构:链表(python版) 续:增加比较函数的更多相关文章

  1. 数据结构之线性表(python版)

    数据结构之线性表(python版) 单链表 1.1  定义表节点 # 定义表节点 class LNode(): def __init__(self,elem,next = None): self.el ...

  2. 数据结构之队列(Python 版)

    数据结构之队列(Python 版) 队列的特点:先进先出(FIFO) 使用链表技术实现 使用单链表技术,在表首尾两端分别加入指针,就很容易实现队列类. 使用顺序表list实现 # 队列类的实现 cla ...

  3. 数据结构之 栈 (Python 版)

    数据结构之 栈 (Python 版) -- 利用线性表实现栈 栈的特性: 后进先出 基于顺序表实现栈 class SStack(): ''' 基于顺序表 实现的 栈类 ''' def __init__ ...

  4. 数据结构C语言版 有向图的十字链表存储表示和实现

    /*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...

  5. Python—数据结构——链表

    数据结构——链表 一.简介 链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构.由一系列节点组成的元素集合.每个节点包含两部分,数据域item和指向下一个节 ...

  6. 北京大学公开课《数据结构与算法Python版》

    之前我分享过一个数据结构与算法的课程,很多小伙伴私信我问有没有Python版. 看了一些公开课后,今天特向大家推荐北京大学的这门课程:<数据结构与算法Python版>. 课程概述 很多同学 ...

  7. 【数据结构与算法Python版学习笔记】引言

    学习来源 北京大学-数据结构与算法Python版 目标 了解计算机科学.程序设计和问题解决的基本概念 计算机科学是对问题本身.问题的解决.以及问题求解过程中得出的解决方案的研究.面对一 个特定问题,计 ...

  8. 数据结构:顺序表(python版)

    顺序表python版的实现(部分功能未实现) #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object): def __ini ...

  9. Python3玩转单链表——逆转单向链表pythonic版

    [本文出自天外归云的博客园] 链表是由节点构成的,一个指针代表一个方向,如果一个构成链表的节点都只包含一个指针,那么这个链表就是单向链表. 单向链表中的节点不光有代表方向的指针变量,也有值变量.所以我 ...

  10. 线性表应用--Josephus问题的解法(Python 版)

    线性表应用 --Josephus问题的解法(Python 版) Josephus问题描述:假设有n个人围坐一圈,现在要求从第k个人开始报数,报到第m个数的人退出.然后从下一个人开始继续报数并按照相同的 ...

随机推荐

  1. [变]C#谜题(1-10)表达式篇

    [变]C#谜题(1-10)表达式篇 最近偶然发现了<Java谜题>,很有意思,于是转到C#上研究一下. 本篇是关于表达式的一些内容. 谜题1:奇数性(负数的取模运算) 下面的方法意图确定它 ...

  2. Python格式化输出

    今天写程序又记不清格式化输出细节了……= =索性整理一下. python print格式化输出. 1. 打印字符串 print ("His name is %s"%("A ...

  3. Oralce 重建EM服务,OracleDBConsoleOracle

    今天打开Oracle ,想进em看看,结果发现OracleDBConsoleOracle服务老是报错: OracleDBConsoleOracle 服务因 2 (0x2) 服务性错误而停止. 搞不懂, ...

  4. Android-webview和js互相调用

    Android-webview和js互相调用 Android 和 H5 都是移动开发应用的非常广泛.市面上很多App都是使用Android开发的,但使用Android来开发一些比较复杂附属类,提示性的 ...

  5. Drupal8重命名上传的中文名文件

    完整的模块代码文件在Coding.net上,想直接使用的请前往下载:https://coding.net/u/yamus/p/chinese_rename/git/tree/master 最近吧Dru ...

  6. iOS-提高iOS开发效率的方法和工具

    提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...

  7. SQL Server 2014新特性探秘(1)-内存数据库

    简介    SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQL PASS Summit 2012的开幕式时,微软就宣布 ...

  8. 解密jQuery内核 DOM操作方法(二)html,text,val

    回顾下几组DOM插入有关的方法 innerHTML 设置或获取位于对象起始和结束标签内的 HTML outerHTML 设置或获取对象及其内容的 HTML 形式 看图对照区别 innerText 设置 ...

  9. 轻量级前端MVVM框架avalon - 控制器

    引子: 最近工作挺忙,avalon只能断断续续的写下去了,大概看了下angular的源码,看到小一半就比较难坚持了,是块硬骨头,慢慢啃吧 不过angular的的文档中用词还是很优雅: HTML编译器 ...

  10. 出操队形(LIS)

    题目来源:微策略2013年校园招聘面试一面试题 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往楼下跑了,然后身高矮的排在队伍的前面,身高较 ...