顺序表:数组要连续的内存,只要知道起始地址
线性结构顺序表:数组要连续的内存,只要知道起始地址:链表
申请完全随机的节点地址
每个节点分为数据域与指针域,
0x100 0x600 0x500 0x700
每个节点都有地址
指针域里面存放下一个节点的地址,最后一个节点指针域NULL,还是一个线性结构
头节点一般不保存数据 ,链表的地址保存头节点的地址:头指针
插入:尾插法(最后一个节点后面),头插法(第一个节点前面)
申请节点,修改指针
遍历:
不用printf打印
采用反调函数show
随机srand
链表的反转
删除插入反转! 代码背下来
前驱
单链表:只能向前,不能回头
用双指针快慢
清空要释放内存
释放之前要先把链表形成,不能打断了
笔试题
链表相交(判断是否相交)
有重合节点,最后一个节点一定相同
Node *p1 = head1,*p2 = head2;
while (p1->next)
{
p1=p1->next;
}
while(p2->next)
{
p2 = p2->next;
}
if(p1 == p2)
{
}
判断哪一点相交
计算长度差,两个指针剩余长度相同时,相同的为相交点
链表环(判断是否有环)
分为快慢指针,快的每次走两步,慢的指针走一步,某个时刻相等,肯定有环
合并两个有序的链表