python实现链表增删改查

class LNode:
    def __init__(self,elem,next_=None):
        self.elem=elem
        self.next=next_     #存放元素下一个结点
        
    def length(self):
        '''返回链表长度,使用head调用返回整个链表的长度
        通过特定实例化对象的调用,可以返回该实例化对象距离表尾有几个元素(包括本身)'''
        pr,n=self,0
        while pr!=None:
            n+=1
            pr=pr.next
        return n
 
       
#初始表头 
p=LNode(0)
head=p

'''插入元素'''
#在表头插入元素       
q=LNode(13)
q.next=head                     #把原表头所代表的节点赋给q的next域
head=q                          #交接完成后,head可以变成新节点了
#在某一位置插入节点(已知把m插入上述的q,p之间),这个同样可以实现在表尾插入(但没有第三行了)
m=LNode(17)                     #定义的这个节点是与链表脱离的(既没有前趋也没有后继)
q.next=m
m.next=p

'''删除元素'''
#删除表首元素,原表头直接被解释器回收
#head=head.next
#删除某特定位置的元素(假设是m节点被删除,需要知道m之前的那个节点)
#q.next=q.next.next

'''链表扫描'''
pointer=head
while pointer!=None:            #(也可以附加其他条件)
    #print(pointer.elem)
    pointer=pointer.next
    
'''链表定位'''
c=LNode(35)
b=LNode(22,c)
a=LNode(19,b)                   #增加几个元素(也就是说,通过构造函数直接定义的链表,链表的元素增加要倒着来?)
p.next=a                        #把abc这个小串穿到p后面

#按下标定位
i=4                             #(寻找下标为4的元素)
pointer2=head
while pointer2!=None and i>0:
    i=i-1
    pointer2=pointer2.next
#print(pointer2.elem)           #现在pointer2指针所代表的就是下标为i的元素节点,如果i溢出,指针所指的就是None
#按元素定位(不懂教材中的"谓词"是什么意思)
element=22
pointer3=head
while pointer3!=None and pointer3.elem!=element:
    pointer3=pointer3.next
#print(pointer3.elem)
'''一种构造链表的新方法'''#这个例子说明了,节点叫什么名字在结构中并不重要,它的前趋后继才是关键
for i in range(2,20,2):
    c.next=LNode(i)
    c=c.next
pointer=head

while pointer!=None:            #(也可以附加其他条件)
    print(pointer.elem)
    pointer=pointer.next


'''****************************************'''
#print(head.length())       #返回链表长度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值