美文网首页
day03 顺序链和数组链的代码

day03 顺序链和数组链的代码

作者: LittleBear_6c91 | 来源:发表于2019-04-24 20:38 被阅读0次

class Node(object):
def init(self, data):
self.data = data
self.next = None

def set_data(self, data):
    self.data = data

def set_next(self, node):
    self.next = node

def __repr__(self):
    return self.data

class NotInListErr(Exception):
def init(self, msg):
self.msg = msg

def __str__(self):
    return self.msg

class LinkedList(object):
def init(self):
self.head = None

def append_item(self, item):
    i = Node(item)
    if self.head is None:
        self.head = i
    else:
        t = self.head
        while t.next is not None:
            t = t.next
        t.set_next(i)

def remove_item(self, item):
    if self.head is None:
        raise NotInListErr("链表为空")
            
    h = self.head
    if item == h.data:
        self.head = self.head.next
    else:
        while h.next is not None and h.next.data != item:
            h = h.next
        
        if h.next is None:
            raise NotInListErr('该元素不在链表中')
        
        h.set_next(h.next.next)
        
def remove_by_index(self, index):
    if index == 0:
        h = self.head
        self.head = h.next
    else:
        left = self.head
        h = left.next            
        for i in range(1, index):
            h = h.next
            left = left.next

        left.next = h.next

def add_item(self, item, index):
    data = Node(item)

    if index == 0:
        data.next = self.head
        self.head = data
    else:
        left = self.head
        h = left.next            
        for i in range(1, index):
            if h is not None:
                h = h.next
                left = left.next
            else:
                left.next = Node('null')
                left = left.next
        data.next = h
        left.next = data

def size(self):
    count = 0
    h = self.head
    while h is not None:
        h = h.next
        count += 1
    return count

def get_item(self, index):
    h = self.head            
    for i in range(index):
        h = h.next

    return h.data

def index(self, item):
    count = 0
    h = self.head
    while h is not None and h.data != item:
        h = h.next
        count += 1
    if h is None:
        return -1
    return count

def __str__(self):
    if self.head is None:
        return "None"
    s = str(self.head.data)
    h = self.head.next
    while h is not None:
        s += '->' + h.data
        h = h.next
    return s

def test():

node1 = Node('apple')
node2 = Node('pear')
node3 = Node('watermelon')
node4 = Node('Strawberry')

node1.set_next(node2)
node2.set_next(node3)
node3.set_next(node4)

node = node1

while True:
    print(node.data)
    if node.next:
        node = node.next 
        continue
    break

head = node1
while (True):
    print(head.data)
    if head.next is None:
        break
    head = head.next

def main():
link_list = LinkedList()
print(link_list)

# link_list.remove_item('apple')
# print("删除:", link_list)

link_list.append_item('apple')
print(link_list)
link_list.append_item('pear')
print(link_list)
link_list.append_item('Strawberry')
print(link_list)

link_list.append_item('Strawberry')
print(link_list)

link_list.remove_item('Strawberry')
print("删除:", link_list)

link_list.remove_item('apple')
print("删除:", link_list)

node1 = link_list.get_item(1)
print("获取:", node1)

link_list.add_item('banana', 5)
print(link_list)

link_list.add_item('1banana', 3)
print(link_list)

print(link_list.index('33'))

if name == 'main':
main()

相关文章

  • day03 顺序链和数组链的代码

    class Node(object):def init(self, data):self.data = datas...

  • 数据结构实现

    1、链表 2、数组 3、顺序栈 4、链栈

  • 【C语言实现】链栈

    简书内代码已上传GitHub:点击我 去GitHub查看代码这篇文章主要解释下链栈是什么和链栈的实现以及链栈和顺序...

  • 栈和队列

    栈和队列 栈由于是一种特殊的线性表,它也分为顺序存储和链式存储。 顺序栈。类比数组,数组的尾巴模拟栈顶 链栈。 ...

  • 栈和队列

    栈和队列 本质上是稍加限制的线性表 栈和队列定义 栈顺序栈定义 链栈结点定义 队列顺序队列 链队列链队类型定义 链...

  • C语言实现链栈以及基本操作

    链栈,即用链表实现栈存储结构。链栈的实现思路同顺序栈类似,顺序栈是将数顺序表(数组)的一端作为栈底,另一端为栈顶;...

  • 星途协议ATP全项通过慢雾科技安全审计

    随着区块链技术的进步和区块链生态的发展,区块链上的代码漏洞愈发受到大量黑客觊觎。由此,代码安全成为整个区块链生态的...

  • 栈和队列

    顺序栈的基本操作: 链栈的基本操作 顺序队的基本操作 链队的基本操作

  • 线性表解析

    前言 线性表是指数据之间是一对一的关系,比如数组和链表都属于这一范畴。数组和链表又代表了两种存储方式:顺序存储和链...

  • 【初识区块链】区块链简介

    区块链简介 一组一组构成块,通过链的方式将这些块连接起来,就构成了区块链。 交易有顺序,块也是有顺序的。 区块链是...

网友评论

      本文标题:day03 顺序链和数组链的代码

      本文链接:https://www.haomeiwen.com/subject/vkpngqtx.html