python链表功能的基本实现

class Node:
    def __init__(self,elem = None,next = None):
        self.elem = elem
        self.next = next
    def getNext(self):
        return self.nex
    def getElem(self):
        return self.elem
    def getNextElem(self):
        return self.nex.elem
    def setnext(self,item):
        self.next = item
class Chain():
    def __init__(self):
        self.head = None
        self.len = 0
    def isEmpty(self):
        return self.len==0
    def addToHead(self,item):
        item = Node(item)
        if self.isEmpty():
            self.head = item

        else:
            item.next = self.head
            self.head = item
        self.len += 1
    def addToEnd(self,item):
        item = Node(item)
        if self.isEmpty():
            print("is Empty chain")
            self.head = item
        else:
            current = self.head
            while current.next != None:
                current = current.next
            current.next = item
        self.len+=1
    def addToIndex(self,n,item):
        m = 0
        item = Node(item)
        if self.isEmpty():
            self.head = item
            self.len += 1
        current = self.head
        try:
            while m != n-1 and  n<self.len:
                current = current.next
                m +=1
            current.next,item.next = item,current.next
            self.len +=1
        except:
            print("index error")
    def printf(self):
        list = []
        current = self.head
        while current:
            list.append(current.elem)
            current = current.next
        print(list)
        return list
    def deleteElem(self,elem):
        #根据元素的大小来进行判断
        if self.isEmpty():
            print("is Empty Chain")
            return -1
        current = self.head
        n = 0
        #这是一个 单项链表 要找到它前面的哪一个节点
        while  current.next.elem != elem  and n<=self.len:
            #当不等于的时候继续往下寻找
            current = current.next
            n+=1
        if n > self.len:
            print("not find elem")
            return -1
        #打印出这个数字
        print(current.next.elem)
        current.next = current.next.next
        self.len-=1
    def getChainLen(self):
        print(self.len)
chain = Chain()
chain.addToHead(10)
chain.addToHead(8)
chain.addToEnd(2)
chain.addToEnd(2)
chain.printf()
chain.addToIndex(2,6)
chain.addToIndex(2,5)
chain.printf()
chain.deleteElem(10)
chain.deleteElem(2)
chain.printf()
chain.getChainLen()
這是結果
/usr/bin/python3.6 /home/mypy/PycharmProjects/numpy_tataitic/tataitic/chain.py
[8, 10, 2, 2]
[8, 10, 5, 6, 2, 2]
10
2
[8, 5, 6, 2]
4

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/weixin_43847832/article/details/88604797