无序列表

无序列表由一个节点集合组成,每个节点采用显式引用链接到下一个节点。

无序列表操作

  1. unorderedList()
  2. add()
  3. remove()
  4. search()
  5. isEmpty()
  6. size()
  7. append()
  8. index(item)
  9. insert(pos, item)
  10. pop()
  11. pop(pos)
    无序列表实现
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    # python实现无序列表

    # Node 类
    class Node():
    def __init__(self, element):
    self.data = element
    self.next = None

    def getData(self):
    return self.data

    def getNext(self):
    return self.next

    def setData(self, newelement):
    self.data = newelement

    def setNext(self, newnext):
    self.next = newnext

    # 无序列表类
    class unorderedList():
    # unorderedList要保持对列表头一个节点的引用
    def __init__(self):
    self.head = None
    # 判断无序列是否为空,即列表头是否指向None
    def isEmpty(self):
    return self.head == None
    # 添加add()方法
    def add(self, item):
    newNode = Node(item)
    newNode.setNext(self.head)
    self.head = newNode

    # 添加size()方法,此过程需要遍历无序列表
    def size(self):
    current = self.head
    count = 0
    while current != None:
    count += 1
    current = current.getNext()
    return count

    # 添加search方法
    def search(self, item):
    current = self.head
    found = False
    while current != None and not found:
    if current.getData() == item:
    found = True
    else:
    current = current.getNext()
    return found

    # 添加remove()方法
    def remove(self, item):
    if not self.search(item):
    return "The unorderedList don't contain this item!"
    previous = None
    current = self.head
    found = False
    while not found:
    if current.getData() == item:
    found = True
    else:
    previous = current
    current = current.getNext()
    # 要删除的节点为第一个节点
    if previous == None:
    self.head = current.getNext()
    else:
    previous.setNext(current.getNext())

    # 添加append()方法
    def append(self, item):
    newNode = Node(item)
    if self.head == None:
    newNode.setNext(self.head)
    self.head = newNode
    else:
    previous = None
    current = self.head
    while current != None:
    previous = current
    current = current.getNext()
    previous.setNext(newNode)

    # 添加index()方法
    def index(self, item):
    current = self.head
    count = -1
    while current != None:
    count += 1
    if current.getData() == item:
    return count
    current = current.getNext()

    # 添加pop()方法
    def pop(self):
    previous = None
    current = self.head
    while current != None:
    previous = current
    current = current.getNext()
    previous.setNext(None)
    return previous.data

    # 添加insert()方法
    def insert(self, pos, item):
    newNode = Node(item)
    previous = None
    current = self.head
    for i in range(pos):
    previous = current
    current = current.getNext()

    # in case of pos = 0
    if previous == None:
    newNode.setNext(self.head)
    self.head = newNode
    else:
    previous.setNext(newNode)
    newNode.setNext(current)

    # traverse the unorderedList
    def println(self):
    current = self.head
    lists = []
    while current != None:
    lists.append(current.data)
    current = current.getNext()
    print(lists)