剑指offer

(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

相关文章
相关标签/搜索