• 数据结构与算法(10)——有序表OrderedList


    • 基本定义

    有序表是一种数据项依照其某科比性质(如整数大小、字母表先后)来决定在列表中的位置。越小的数据越靠近列表的头,越靠前。

    •  基本属性

    orderedList()

    创建一个有序表
    add(item) 加入一个数据项,并保持整体顺序
    remove(item) 从有序表中移除一个数据项,有序表被修改
    search(item) 查找数据项,返回bool类型
    isEmpty()

    是否空表

    size()

    返回表中数据项的个数

    index(item) 返回数据项在表中的索引
    pop() 移除有序表最后一项
    pop(pos) 移除指定项
    • 用链表实现有序表

    这里需要注意的是有序表数据项的相对位置,取决于它们之间的“大小”比较。

     1 from node import Node
     2 class OrderedList():
     3     def __init__(self):
     4         self.head = None #这里首先需要定义无须表的表头head属性,保存对第一个节点对的引用空表head为None.
     5     def isEmpty(self):
     6         return self.head == None
     7     def add(self, item):
     8         current = self.head
     9         previous = None
    10         stop = False
    11         while current != None and not stop:
    12             if current.getData() > item:
    13                 stop = True
    14             else:  
    15                 previous = current
    16                 current = current.getNext()
    17         temp = Node(item)
    18         if previous == None:
    19             temp.setNext(self.head)
    20             self.head = temp
    21         else:
    22             temp.setNext(current)
    23             previous.setNext(temp)
    24 
    25     def size(self):
    26         current = self.head
    27         count = 0
    28         while current != None:
    29             count += 1
    30             current = current.getNext()
    31         return count
    32 
    33     def search(self,item):
    34         current = self.head
    35         found = False
    36         while current != None and not found:
    37             if current.getData() == item:
    38                 found = True
    39             else:
    40                 if current.getData() > item:
    41                     stop = True
    42                 else:
    43                     current = current.getNext()
    44         return found
    45 
    46 s = OrderedList()
    47 s.add(5)
    48 s.add(6)
    49 s.add(7)
    50 s.add(6)
    51 print(s.head.getData())

    参考:https://www.bilibili.com/video/BV1QJ411w7bB?p=29

  • 相关阅读:
    JAVA基础-多态
    JAVA基础-- 对象转型 (casting)
    Flutter: 下拉刷新,上拉加载更多
    Flutter 创建dashboard页面
    Android Studio 3.3.1 向avd模拟器发送本地文件
    Flutter 真机调试
    android adb命令,向开发手机添加文件
    获取用户在web页面上选中的文本
    Cheat Engine 6.8 设置中文
    Flutter 编写内联文本
  • 原文地址:https://www.cnblogs.com/yeshengCqupt/p/12617186.html
Copyright © 2020-2023  润新知