结构

链表
通过指针连接起来的链。


特征:
1 地址不连续(也可以物理上连续,但是顺序不同,比如一次性开辟很多个节点)
2 存储下一个地址


struct node{
Data val;
node*next;
}
node *insert(node *head, node *nd){
if(head == NULL)
return nd;
node *tmp = head;
while(tmp->next != NULL)
tmp = tmp->next;
tmp->next = nd;
nd->next = NULL;
return head;
}
双向链表
同时存储前一个地址


链表反转:
1 插链表法:重新开辟地址或者直接在原有链表上取出插入新的链表。
2 直接反转:存储第一个到第最后一个的地址或数据,然后交换位置或数据


链表找环:
1 快慢指针:一个前进一步,一个前进两步,还可以据此算出环长,环位置
2 标记法:给已经走过的点特别标记。


链表相交:
使其中一个表成环,则就成为链表找环


节点删除:
1 从头找。。。
2 如果后面还有节点,可以把数据改为后一个节点,然后删除后一个节点。


深度拷贝(包含随机指针)
首先建立基本链表
然后:用映射实现链表地址与原链表地址的连接
 用数组保存原链表关系,使原链表next先指向新链表,处理完再返回
 原链表与新链表采用交替连接的方式,最后再分开。


链表反向输出
1 先反转再按序输出
2 递归
3 栈的使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值