zoukankan      html  css  js  c++  java
  • 链表

    链表

    链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑指针是通过链表中的指针链接次序实现的,链表由一系列节点(链表的每一个元素称为一个节点)组成,节点可以在运行的时候动态生成.每一个节点包括两个部分,一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域

    链表的创建:

    class Link(object):
        def __init__(self, val, next=None):
            self.val = val
            self.next = next

    删除某一个链表的值为val的节点:

    class Solution:
        """
        @param head: a ListNode
        @param val: An integer
        @return: a ListNode
        """
        def removeElements(self, head, val):
            # write your code here
            if head is None:
                return None
            new_link = Link(0)##链表全部的节点可能都存在等于val的值,所以需要添加一个节点
            new_link.next = head
            head = new_link
            pre = head
            while pre.next is not None:  # 遍历链表,删除等于val的所有节点
                if pre.next.val == val:
                    pre.next = pre.next.next
                else:
                    pre = pre.next
            return new_link.next
    chain=(3,Link(5,Link(2,Link(5,Link(0))))) link
    =Solution().removeElements(chain,3)

    删除链表倒数第n个结点:

    class  Solution():
        def  nthnode(self,head,n):
            front=back=head
            for   i in range(n):
                front=front.next##得到前面的n个结点
            while  (front):
                front=front.next##
                back=back.next
            return  back

    翻转链表

    """
    Definition of ListNode
    
    class ListNode(object):
    
        def __init__(self, val, next=None):
            self.val = val
            self.next = next
    """
    
    class Solution:
        """
        @param head: n
        @return: The new head of reversed linked list.
        """
        def reverse(self, head):
            if   head is  None  and  head.next  is  None:
                return  head
            new_head=self.reverse(head.next)##一直递归到最后的位置为止
            head.next.next=head.next##对head进行操作
            head.next=None##断开当前链表的下一个结点
            return    new_head
  • 相关阅读:
    GolandQuick编辑器快捷键
    GitStand
    高阶函数
    文本和字节序列
    元组用法
    映射的弹性键查询
    字典的setdefault()
    数组、内存视图、双向队列
    Python之random.seed()用法
    用bisect来管理已排序的序列
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/10419694.html
Copyright © 2011-2022 走看看