数据结构与算法——链表

反转链表

def reverse(head):
	q=None
	p=heap
	while p:
		temp=p.next
		p.next=q
		q=p
		p=temp
	return p

判断链表环

def meetingnode(head):
	if not head:
		return 
	slow=head
	fast=head.next
	while fast and fast.next:
		if fast==slow:
			return slow
		slow=slow.next
		fast=fast.next.next
	return None

环的入口

def entry(head):
	meet=meetingnode(head)
	if not meet:
		return None
	count=1
	p=meet
	while p.next!=meet:
		p=p.next
		count+=1
	a=head
	b=head
	for i in range(count):
		a=a.next
	while a!=b:
		a,b=a.next,b.next
	return a

合并链表

#合并两个有序
class Solution:
    # 返回合并后列表
    def Merge(self, pHead1, pHead2):
        # write code here
        if pHead1==None:
            return pHead2
        if pHead2==None:
            return pHead1
        if pHead1.val<pHead2.val:
            dummy=pHead1
            dummy.next=self.Merge(pHead1.next,pHead2)
        else:
            dummy=pHead2
            dummy.next=self.Merge(pHead1,pHead2.next)
        return dummy
#合并多个链表,并排序
class Solution:
    def mergeKLists(self, lists):
        """
        :type lists: List[ListNode]
        :rtype: ListNode
        """        
        pre = cur = ListNode(0)           
        heap = []
        for i,j in enumerate(lists):
            if j: 
                heapq.heappush(heap, (j.val, i, j))                
        while heap:
            node = heapq.heappop(heap)
            idx = node[1]
            cur.next = node[2]  
            cur = cur.next
            if cur.next:
                heapq.heappush(heap, (cur.next.val, idx, cur.next))
        return pre.next

两链表的公共节点

#计算长度
def intersection(head1,head2):
	a,b=head1,head2
	l1=l2=0
	while a:
		a=a.next
		l1+=1
	while b:
		b=b.next
		l2+=1
	a,b=head1,head2
	if l1>l2:
		for i in range(l1-l2):
			a=a.next
	elif l1<l2:
		for i in range(l2-l2):
			b=b.next
	while a!=b:
		a,b=a.next,b.next
	return a
#LeetCode上的简洁版
def intersection(head1,head2):
	if not head1 or not head2:
		return 
	a=head1
	b=head2
	while a!=b:
		a=a.next if a else head2
		b=b.next if b else head1
	return a

奇偶链表

#奇数维节点在前,偶数位放后面,并保证顺序不变
def oddevenlist(head):
	d1=odd=ListNode(0)
	d2=even=ListNode(0)
	i=1
	while head:
		if i%2:
			odd.next=head
			odd=head
		else:
			even.next=head
			even=head
		head=head.next
		i+=1
	odd.next=d2.next
	even.next=None
	return  d1.next

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值