(1)在O(1)时间内删除链表结构【剑指offer-13】 数组
题目:给定一个单向链表的头指针和一个结点指针,定义一个函数在O(1)时间内删除该节点。 函数
struct ListNode{ int value; ListNode* next; } void DeleteList(ListNode** pListHead,ListNode* pToBeDelete) { if(!pListHead||!pToBeDelete)return;//判空 //删除结点为非尾节点 if(pToBeDelete->next!=Null) { ListNode* p_Next = pToBeDelete->next; pToBeDelete->value = p_Next->value; pToBeDelete->next = p_Next->next; delete p_Next; p_Next = Null; } //链表只有一个节点,删除头节点,也是尾节点 else if(* pListHead==pToBeDelete) { delete pToBeDelete;//垃圾回收 pToBeDelete = Null; * pListHead =Null; } //链表中有多个节点,删除尾节点 else{ ListNode* pNode = *pListHead; while(pNode->next!=pToBeDelete) { pNode = pNode->next; } pNode->next=Null; delete pToBeDelete; pToBeDelete = Null; } }(2)调整数组顺序使奇数位于偶数前面【剑指offer-14】
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得全部 spa
(3)链表中倒数第k个节点【剑指offer-15-代码鲁棒性】 指针
(4)反转链表【剑指offer-16】 code
每处理一个节点须要三个指针:分别指向当前遍历结点、它的前一个节点、它的后一个节点 排序
(5)合并两个排序的链表【剑指offer-17】 class
(6)树的子结构【剑指offer-18】 List