zoukankan      html  css  js  c++  java
  • 数据结构与算法(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

  • 相关阅读:
    BZOJ 1391: [Ceoi2008]order
    BZOJ 4504: K个串
    2019 年百度之星·程序设计大赛
    POJ 2398 Toy Storage (二分 叉积)
    POJ 2318 TOYS (二分 叉积)
    HDU 6697 Closest Pair of Segments (计算几何 暴力)
    HDU 6695 Welcome Party (贪心)
    HDU 6693 Valentine's Day (概率)
    HDU 6590 Code (判断凸包相交)
    POJ 3805 Separate Points (判断凸包相交)
  • 原文地址:https://www.cnblogs.com/yeshengCqupt/p/12617186.html
Copyright © 2011-2022 走看看