数据结构(链表反转)python

class Node(object): # object 里面有很多高级的方法,一般选择继承
    #定义节点传入值为elem,指向下一个为空
    def __init__(self, elem):
        self.elem = elem
        self.next = None

# 开始定义单链表
class SingleLinkList(object):
# 默认值为None, node = Node(5), SingleNode = SingleLinkList(node)
# 第一个节点可以先设置为5啊
    def __init__(self, node = None): 
        self.__head = node # 头指针指向第一个节点

    def is_empty(self):
        '''链表是否为空'''
        return self.__head == None
    
 # 链表头部添加(不用判断是否为空了,因为在头部添加的,不用遍历了)
    def add(self, item):
        node = Node(item)
        node.next = self.__head
        self.__head = node

# 链表尾部添加(需要判断是否为空,为空的话就不需要遍历了。直接self.__head = node)
    def append(self, item):
        node = Node(item)
        if self.is_empty():
            self.__head = node
        else:
            cur = self.__head # 设定指针从头结点开始
            while cur.next != None:  # 开始遍历到结尾
                cur = cur.next
            cur.next = node  
            
# 定义一个链表反转的函数
    def reverse(self, node):
        reverseHead = None # 反转后的头指针
        cur = self.__head # 设定指针从头结点开始
        pre = None # 前一个节点
        pnext = None # 后一个节点
        while cur.next != None:
            pnext = cur.next # 先把cur.next存下来。
            if (pnext == None) # 反转完了,遍历结束
                 reverseHead = cur # 最后一个节点,设定为头指针
            
            cur.next = pre # 当前节点,指向前一个节点
            
            pre = cur  
            cur = pnext
        return reverseHead

链表面试题(一):反转链表的算法实现 - csbdong - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值