python 构造单链表

链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址。由于每个结点都包含了可以链接起来的地址信息,所以用一个变量就能够访问整个结点序列。也就是说,结点包含两部分信息:一部分用于存储数据元素的值,称为信息域;另一部分用于存储下一个数据元素地址的指针,称为指针域。链表中的第一个结点的地址存储在一个单独的结点中,称为头结点或首结点。链表中的最后一个结点没有后继元素,其指针域为空。  


python构造的单链表的功能包括   头插入,尾插入,查找,删除,长度。




#coding:utf8


class Node():
    def __init__(self,val,nt = None):
        self.value = val
        self.next = nt


class singnalList():
    def __init__(self):
        self.head = None
        self.tail = None
        self.size = 0
    def __str__(self):
        newList  = self.head
        s = ''
        while newList:
            s +=str(newList.value)
            if newList.next:
                s+=","
            newList = newList.next
        return s
            
    def addHead(self,data):
        newList = Node(data,None)
        if self.head  == None:
            self.head = newList
            self.tail = newList
        else:
            newList.next = self.head
            self.head = newList
        self.size += 1
            
    def addTail(self,data):
        newList = Node(data,None)
        if self.head == None:
            self.head = newList
            self.tail = newList
        else:
            self.tail.next = newList
            self.tail = newList
        self.size += 1


    def finds(self,index):
        if self.size == 0:
            return
        if index > self.size:
            return
        cur = self.head
        cnt = 0
        while cur :
            if cnt == index:
                return cur.value
            cnt += 1
            cur = cur.next
            
    def delets(self,data):
        if self.size == 0:
            return
        cur = self.head
        per = None
        while cur:
            if cur.value == data:
                 break
            per = cur
            cur = cur.next
        if cur == self.head:
            self.head = cur.next
        else:
            per.next = cur.next
        self.size -= 1
    
    def lens(self):
        return self.size



        

if __name__== "__main__":
    s = singnalList()
    s.addHead(['d','3','5'])
    s.addHead(2)
    s.addTail(4)
    s.addTail(6)
    s.addHead(0)
    s.addTail(9)
    print s
    print s.size
    print s.finds(2)
    s.delets(0)
    s.addHead('rt')
    print s
            
            
        


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值