双指针问题

指针的概念

在计算机科学中,指针是一个变量,它存储了一个内存地址的值。这个地址指向存储器中的一个数据单元,可以是变量、数组、结构体等。

指针通常用于动态分配内存、传递参数、实现数据结构等方面。使用指针可以使程序更高效地使用内存,避免不必要的数据拷贝,同时也可以实现更加灵活的数据结构。

指针的概念在不同的编程语言中有所不同,但基本概念是相似的。在 C 和 C++ 中,指针是一种重要的数据类型,程序员需要手动管理内存,因此指针使用得当可以提高程序的效率和灵活性,但使用不当也容易引起内存泄漏、悬垂指针等问题。在其他语言中,如 Java、Python 等,指针被隐藏起来,使用更加安全,但也牺牲了一定的灵活性和效率。

链表的概念

表是一种常见的数据结构,它由一个个节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。链表的基本思想是通过指针连接每个节点,将它们串联起来,形成一个序列。

链表的结构相比于数组更加灵活,因为链表的大小可以动态地增加或减少,而数组的大小一旦确定就不能改变。同时,链表的节点可以不连续存储,因此可以更加高效地利用内存。

链表有多种类型,如单向链表、双向链表、循环链表等。单向链表每个节点只有一个指向下一个节点的指针,双向链表每个节点有两个指针,一个指向前一个节点,一个指向后一个节点,循环链表的最后一个节点指向第一个节点,形成一个环。

链表的操作包括插入、删除、遍历等。插入和删除操作可以在常数时间内完成,而数组的插入和删除操作通常需要线性时间,因为数组的元素需要移动。遍历链表可以从头节点开始,一直遍历到链表尾部,依次访问每个节点的数据元素。

链表在算法和数据结构中有着广泛的应用,如排序算法、图形算法、哈希表等。

在算法中,指针的概念常常被应用。比如说二分查找中存储查找范围最左和最右元素的两个变量,就可以理解为左指针和右指针,因为它们起到了“存储数据储存位置”的作用。
在Python中,标准意义上的指针并不存在。不过,Python语言的许多内置函数和功能都使用了指针来编写——比如说列表,实际上是以链表的形式存在的。不过,程序员无法在用Python编写程序的时候直接使用真正意义上的指针。

#节点定义
class ListNode:
	def __init__(self, v):
		 self.val = v
		 self.next = None
#删除倒数第n个数据
def removeLastNth(head, n):
	temp = ListNode(0)
	temp.next = head
	fast = slow = temp
	c = 0
	while c < n:				#fast先走n步
		fast = fast.next
		c += 1
	while fast.next:
		fast = fast.next
		slow = slow.next
	slow.next = slow.next.next
	return temp.next
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值