链表;
删除链表倒数第k’个节点__
- 1;找到个链表的倒数第k个节点;
pfast——》k步
while(pfast)
{
-
2;删除;
-
3确认链表是否相交;
找到两个链表相交的起始交点。 -
4;求交点;
给两个指针,指针相同的地方就是交点。
长度不同的链表相交;长的链表的指针先走差值个节点‘ -
5;判断链表是否带环?
给定两个速度不一样的指针;
pfast’->next->next
pslow->nextNode*plast=head; Node*pslow=head; while(plast&&plast->next) { plast->next->next; pslow->next; if(pfast=pslow) return true; }
6;给定一个链表,返回开始入环的第一个节点,如果没有环。则返回null
给定两个快慢指针;ph=phead; pm=pmeetnode; while(ph!=pm) { ph=ph->next; pm=pm->next; }
7;给定一个链表,随机
在原链表每个节点后插入相同的新节点
给新插入节点的随机指针域赋值。
复制链表;p1放到p2的位置,
p2指向p1的next;
p1指向p2的next;node*buynode(int data) { node*pnewnode=(node*)malloc(sizeof(node)) } class solution { public: node*copyrandomlist(node*head) { if(null==head) return null; node*pcur=head; while(pcur) { node*pnewnde=buynode(pcur->val); pnewnode->next=pcur->next; pcur->next=pnewnode; pcur=pnewnode->next; } } }