单向链表的创建及基本操作

这篇博客详细介绍了如何创建单向链表,并探讨了包括插入、删除、查找等基本操作。通过实例展示了链表的动态变化,如从[3, 2, 1, 0]到[3, 2, 0],再到[3, 10, 2, 0]的过程。" 129801077,10864352,C语言实现最小公倍数与最大公约数:辗转相除法和欧几里得算法,"['C语言', '算法', '数学运算', '编程技巧']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class LinkedListNode():
    def __init__ (self, value = None, next = None):
        self.value = value
        self.next = next
    
# 单链表类
class SingleLinkedList():
    # 初始化
    def __init__ (self):
        self.head = None
    
    # 判断链表是否为空
    def is_empty(self):
        if self.head is None:
            return True
    
    # 创建一个新链表节点
    def add(self,new_value):
        node = LinkedListNode(new_value,self.head)
        self.head = node
    
    # 增加一个新的结点
    def append(self,new_value):
        node = LinkedListNode(new_value)
        if self.is_empty():
            self.head = node
        else:
            node.next = self.head
            self.head = node
      
    # 获取链表长度
    def length(self):
        cur = self.head
        count = 0
        while cur is not None:
            count = count + 1
            cur = cur.next
        return count
    
    # 按照指定位置插入新的结点
    def insert(self,pos,new_value):
        node = LinkedListNode(new_value)
        if pos <= 0:
            self.add(new_value)
        elif pos > self.length()-1:
            self.append(new_value)
        else:
            node = LinkedListNode(new_value)
            cur = self.head
            count = 0
            while count < pos-1:
                count = count+1
                cur=cur.next
            node.next = cur.next
            cur.next = node
    
    # 删除链表中的某一个值(所有)
    def remove(self,old_value):
        cur = self.head
        pre = None
        while cur is not None:
            if cur.value == old_value:
                if not pre:
                    self.head = cur.next
                else:
                    pre.next = cur.next
                cur = cur.next
            else: 
                pre = cur
                cur = cur.next
    
    # 遍历整个链表,并将其值存在一个列表中
    def travel(self):
        cur = self.head
        ls = []
        while cur is not None:
            ls.append(cur.value)
            cur =cur.next
        return ls
    
    # 搜索某个值是否存在于当前链表中
    def search(self, s_value):
        cur = self.head
        while cur is not None:
            if cur.value == s_value:
                return True
            else:
                cur = cur.next
        return False  
newL = SingleLinkedList()
newL.add(0)
print(newL.head.value)

0

newL.append(1)
newL.append(2)
newL.append(3)
print(newL.travel())

[3, 2, 1, 0]

newL.remove(1)
print(newL.travel())

[3, 2, 0]

print(newL.length())

3

print(newL.search(2))
print(newL.search(1))

True
False

newL.insert(1,10)
print(newL.travel())

[3, 10, 2, 0]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值