Python3 关于链表的定义、获取链表结点、链表的长度、增加结点、删除结点

#encoding = "utf-8"#链表的定义class Node(): def __init__(self,value,next = None): self.value = value self.next = nexthead = Node(100) #定义第一个值100,第二个值99head.next = Node(99)...
摘要由CSDN通过智能技术生成
#encoding = "utf-8"

#链表的定义
class Node():    
    def __init__(self,value,next = None):
        self.value = value
        self.next = next

head = Node(100)    #定义第一个值100,第二个值99
head.next = Node(99)
head.next.next = Node(88)


#获取链表中的值
def get_Node_value(head):   
    linklist = []
    while head:
        linklist.append(head.value)
        head = head.next
    return linklist

print("当前链表值是:%s \n" %get_Node_value(head))



#在链表中增加一个值,head是头结点,value是要添加的值,target是在目标元素之前插入
#插入的操作:1)找到目标结点target 2)将目标结点的前一个结点指向新插入的结点 3)将新节点的指针指向目标结点
#插入的方式有三种:1)在头结点前插入 2)在链表中间插入 3)在链表结尾插入

def add_node_in_linklist(head,value,target):

    newNode = Node(value)
    tempHead = head    #复制一下链表
    previous = None    #插入结点的前结点默认为Node
    while tempHead:
        if tempHead.value == target:    #如果target存在
        
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
双向链表是一种链表结构,每个节点有两个指针,一个指向前一个节点,一个指向后一个节点。在 Python 中,可以使用类来实现双向链表,代码如下: ```python class Node: def __init__(self, data): self.data = data self.prev = None self.next = None class DoublyLinkedList: def __init__(self): self.head = None def insert(self, data): new_node = Node(data) if self.head is None: self.head = new_node else: curr_node = self.head while curr_node.next is not None: curr_node = curr_node.next curr_node.next = new_node new_node.prev = curr_node def display(self): curr_node = self.head while curr_node is not None: print(curr_node.data, end=' ') curr_node = curr_node.next ``` 在上面的代码中,我们定义了一个 `Node` 类和一个 `DoublyLinkedList` 类,其中 `Node` 类表示链表中的一个节点,包括数据 `data` 和指向前一个节点 `prev` 和后一个节点 `next` 的指针。`DoublyLinkedList` 类表示双向链表,包括头指针 `head` 和插入函数 `insert` 和展示函数 `display`。 在 `insert` 函数中,我们首先创建一个新节点 `new_node`,然后判断链表是否为空,如果为空,则将头指针指向新节点;否则,我们遍历整个链表,找到最后一个节点 `curr_node`,将其后一个节点指针 `next` 指向新节点,同时将新节点的前一节点指针 `prev` 指向当前节点 `curr_node`。 在 `display` 函数中,我们从头指针开始遍历整个链表,展示每个节点的数据 `data`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值