面试系列---经典算法部分

本文详细介绍了单链表的基本操作,包括单链表的反转、查找环状结构、指定节点的删除以及深拷贝等核心内容。通过具体的代码示例,帮助读者深入理解这些操作的实现原理及步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单链表反转



LinkList reverse_link(LinkList list)
{
	if(NULL == list
			|| NULL == list->next)
		return list;
	LinkList temp,prev,next;
	prev=list;
	temp=list->next;
	prev->next=NUll;
	while(temp!= NULL){
		next=temp->next;//原后指针给next
		temp->next =prev; //后指针指向list,成为前指针
		temp=next;//nextt给temp
		prev=temp;//temp给prev
	}
	return prev;
}

时间复杂度为O(n)

单链表找环



使用快慢指针;

int get_circle_local(Node *phead)
{
	Node *fast = phead;
	Node *slow = phead;
	while(fast != NULL
		&& fast->next != NULL)
	{
		fast = fast->next->next;
		slow = slow->next;
		if(fast == slow)
		{
			return 1;
		}
	}
	return 0;
}
O(1)删除单链表中指定地址结点(结点数据确定)


链表深拷贝

有一个特殊的链表,其中每个结点不但有指向下一个结点的指针PNEXT,还有一个指向链表中的任意结点的指针PRAND,如何拷贝这个链表?







单链表反序输出



编码实现大数的乘法操作




数组映射表














































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值