首页 > 编程知识 正文

python结构体,python如何实现链表

时间:2023-05-06 09:41:43 阅读:160710 作者:4122

输入主题说明链表,输入反转链表,然后输出新链表表头。 分析:首先自由制作链表。

这是一个翻转的链表,我们想要的:

因为链表搜索元素只有从头节点开始,所以可以考虑一个一个地将指针指向上一个元素

当链表的长度变为无限大时,每次反转都会变成o(n )的复杂度,所以总的复杂度为o(n^2)。

这个方法时间的复杂性太高了! 看下一个解法

解法详情:循环解决问题:

(1)首先定义3个指针。 左点、右点和右点分别指向第一、第二和第三节点。

)2)使leftPointer指向天空()反转链表的尾部节点) :

)3) midPointer指向左点:

)4)同时将三个指针向后移动一个位置:

)5) midPointer指向左点(与步骤3相同) :

)6)同时将三个指针向后移动一个位置(与步骤4相同) :

(7) midPointer指向左点(与步骤3、5相同) :

)8)链表翻转完成。 此时,midPointer指针指向的是链表的反转头。 边界条件: (1)一般为上述步骤)2)如果头部节点为None,则直接返回None

)3)如果头部节点指向None,反转后仍然保持不变,则直接返回头部节点

详细代码(python (# class listnode : # def _ init _ _ ) self,x ) : #链表结构定义# self.val=x # self.next=nonext=ne pHead ) : # pHead在初始链表的头节点if pHead==None: # )头节点为空时直接返回None,(边界2 ) returnnoneifphead.next==none 直接返回到头节点(边界3 ) return pHead #,三个指针leftPointer、midPointer和rightpointerleftpointer=phead# 定义leftpointer指向首节点(步骤1 ) midPointer midPointer指向首节点的下一个节点(步骤1 ) rightpointer=midpointer.next# rightpointer指向以下节点)步骤1 ) leftPointer.next=None #先令leftPointer=None: #指针如果rightpointer的点不为空,则为mid pointer (步骤3、5 ) left pointer=mid pointer # mid pointer (步骤4、6 ) mid pointer=rightPointer # mid pointer在指针图像之后移动1位,然后right pointer 6 )同样向后移动一个位直到rightpointer=right pointer.next # right pointer指针(步骤4,6 )当循环完成时,right pointer指向None,此时(步骤7 ) return midPointer # midPointer是新链表的头

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。