zoukankan      html  css  js  c++  java
  • 数据结构:链表(python版) 续:增加比较函数

    题目:

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

      1 class LList:
      2     
      3     """
      4     省略已实现部分
      5     """
      6     
      7     #根据索引获得该位置的元素
      8     def __getitem__(self, key):
      9         if not isinstance(key, int):
     10             raise TypeError
     11         if 0<=key<len(self):
     12             p = self._head
     13             num = -1
     14             while p:
     15                 num += 1
     16                 if key == num:
     17                     return p.elem
     18                 else:
     19                     p = p.next
     20         else:
     21             raise IndexError
     22 
     23     #判断两个列表是否相等 ==
     24     def __eq__(self, other):
     25         #两个都为空列表 则相等
     26         if len(self)==0 and len(other)==0:
     27             return True
     28         #两个列表元素个数相等 当每个元素都相等的情况下 两个列表相等
     29         elif len(self) == len(other):
     30             for i in range(len(self)):
     31                 if self[i] == other[i]:
     32                     pass
     33                 else:
     34                     return False
     35             #全部遍历完后则两个列表相等
     36             return True
     37         #两个列表元素个数不相等 返回Fasle
     38         else:
     39             return False
     40     #判断两个列表是否不相等 !=
     41     def __ne__(self, other):
     42         if self.__eq__(other):
     43             return False
     44         else:
     45             return True
     46     # >
     47     def __gt__(self, other):
     48         l1 = len(self)
     49         l2 = len(other)
     50         if not isinstance(other, LList):
     51             raise TypeError
     52         # 1.len(self) = len(other)
     53         if l1 == l2:
     54             for i in range(l1):
     55                 if self[i] == other[i]:
     56                     continue
     57                 elif self[i] < other[i]:
     58                     return False
     59                 else:
     60                     return True
     61             #遍历完都相等的话说明两个列表相等 所以返回False
     62             return False
     63         # 2.len(self) > len(other)
     64         if l1 > l2:
     65             for i in range(l2):
     66                 if self[i] == other[i]:
     67                     continue
     68                 elif self[i] < other[i]:
     69                     return False
     70                 else:
     71                     return True
     72             #遍历完后前面的元素全部相等 则列表个数多的一方大
     73             #if self[l2-1] == other[l2-1]:
     74             return True
     75         # 3.len(self) < len(other)
     76         if l1 < l2:
     77             for i in range(l1):
     78                 if self[i] == other[i]:
     79                     continue
     80                 elif self[i] < other[i]:
     81                     return False
     82                 else:
     83                     return True
     84             #遍历完后前面的元素全部相等 则列表个数多的一方大
     85             #if self[l2-1] == other[l2-1]:
     86             return False
     87     # <
     88     def __lt__(self, other):
     89         #列表相等情况下>会返回False,则<这里判断会返回True,有错误.所以要考虑在==的情况下也为False
     90         if self.__gt__(other) or self.__eq__(other):
     91             return False
     92         else:
     93             return True
     94     # >=
     95     def __ge__(self, other):
     96         """
     97         if self.__eq__(other) or self.__gt__(other):
     98             return True
     99         else:
    100             return False
    101         """
    102         #大于等于和小于是完全相反的,所以可以依靠小于实现
    103         if self.__lt__(other):
    104             return False
    105         else:
    106             return True
    107     # <=
    108     def __le__(self, other):
    109         """
    110         if self.__eq__(other) or self.__lt__(other):
    111             return True
    112         else:
    113             return False
    114         """
    115         ##小于等于和大于是完全相反的,所以可以依靠大于实现
    116         if self.__gt__(other):
    117             return False
    118         else:
    119             return True
  • 相关阅读:
    Hive 复杂数据类型的使用
    Hive 函数之内置运算符
    Hive中Join的类型和用法
    Hive 文件格式 & Hive操作(外部表、内部表、区、桶、视图、索引、join用法、内置操作符与函数、复合类型、用户自定义函数UDF、查询优化和权限控制)
    初步认识Hive
    Hadoop之MapReduce
    我理解中的Hadoop HDFS分布式文件系统
    Hadoop环境搭建 (伪分布式搭建)
    Hadoop(初始Hadoop)
    【数据库】MySQL 从安装到命令
  • 原文地址:https://www.cnblogs.com/xautxuqiang/p/6100905.html
Copyright © 2011-2022 走看看