题目如图:

1.把要删除pToBeDeleted的节点的后面节点覆盖点要删除的节点pToBeDeleted

2.要考虑如果删除的节点是最后一个节点怎么办

3.要考虑如果总共只有一个节点,删除的是头结点或者说是尾节点怎么办

———————————————————————————————————函数指针的用法,一个特例,将所有的奇数移动到所有的偶数前面——————————————————————————————————————————————————————

是和快速排序的思路是相同的,就是在函数调用的时候使用了一个函数指针的形式,对于函数指针开始的时候不熟,现在对函数指针进行一个学习或者复习的过程。

对于一些模糊的概念进行整理:

首先看的指针函数和函数指针有什么区别:

(1)指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针

  定义的形式是:     类型标识符    *函数名(参数表)

首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。

表示:

float *fun();

float *p;

p = fun(a);

(2)注意指针函数与函数指针表示方法的不同,千万不要混淆。最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数

函数指针是指向函数的指针变量,即本质是一个指针变量。

 int (*f) (int x); /* 声明一个函数指针 */

 f=func; /* 将func函数的首地址赋给指针f */

类型说明符 (*函数名)(参数)

其实这里不能称为函数名,应该叫做指针的变量名。

(3)指针的指针

声明的形式:char ** cp;

因此会有如下的解释

指针的指针需要用到指针的地址。
        char c='A';
        char *p=&c;
        char **cp=&p;
    通过指针的指针,不仅可以访问它指向的指针,还可以访问它指向的指针所指向的数据。下面就是几个这样的例子:
        char *p1=*cp;
        char c1=**cp;

关键在于熟练掌握操作符的优先级和++的使用方法
*p=*p+1;此处*为间接访问,P指向的地址内容+1后的值赋给P指向的地址
*p++;//这里*和++为同一优先级,P先和++结合;右移P++是先使用P的值,后P的值+1
//*p++和*p=*p+1的区别是后者是P指向的地址的值+1,前者是P的地址+1,所有后者、即单独的*p++;等价于P++,是一种容易误解的写法,在实际程序中不会用到*p++;这样的语句
*++p;//类似,先是P指向先一个单元,再间接访问P指向的地址的值,同样没有单独使用 *++p;语句,如果单独使用 *++p;则和++p等价 (4)指向指针数组的指针
指针的指针另一用法旧处理指针数组。有些程序员喜欢用指针数组来代替多维数组,一个常见的用法就是处理字符串 其中的一个样例的使用是这样的:
char *Names[]=
        {
             Bill,
             Sam,
             Jim,
             Paul,
             Charles,
             0
        };         main()
        {
            char **nm=Names;
            while(*nm!=0) printf(%s\n,*nm++);
        } 注意数组中的最后一个元素被初始化为0,while循环以次来判断是否到了数组末尾。具有零值的指针常常被用做循环数组的终止符。程序员称零值指针为空指针(NULL)。采用空指针作为终止符,在树种增删元素时,就不必改动遍历数组的代码,因为此时数组仍然以空指针作为结束。

剑指offer之O(1)算法删除指针所指向的节点的更多相关文章

  1. 剑指Offer——知识点储备-常用算法

    剑指Offer--知识点储备-常用算法 快速排序 注:若排序是有序的,采用快排,则退化为冒泡排序. 解决这个问题,采用两个选取基准的方法 (1)随机选取基数(在这个区间内随机取一个数) 出现的恶劣情况 ...

  2. 《剑指offer》两个链表中的第一个公共节点

    本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:

  3. 【剑指offer】52. 两个链表的第一个公共节点

    剑指 Offer 52. 两个链表的第一个公共节点 知识点:链表: 题目描述 输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 示例 示例1: 输入:intersectVal = 8, l ...

  4. 【校招面试 之 剑指offer】第18题 删除链表中的节点

    题目一:在O(1)时间内删除链表节点. 给定单项链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点. 思路:(1)如果要删除的节点不是链表的尾节点,则将被删除节点的内容复制到该节点,然 ...

  5. [刷题] 剑指offer 面试题18:删除链表节点

    要求 给定单向链表的头指针和一个节点指针,在O(1)时间内删除该节点 常规思路:从头节点a开始顺序遍历,发现p指向要删除的节点i,然后把p的m_pNext指向i的下一个节点j,时间复杂度O(n) O( ...

  6. 剑指offer中数据结构与算法部分学习

    2.3.4 树 遍历:前中后序,宽度优先. 二叉树的特例:二叉搜索树.堆(最大堆和最小堆,用于找最值).红黑树(c++ STL中的很多数据结果就是基于这实现的): 题7-重建二叉树:递归,设置四个位点 ...

  7. 剑指offer.在O(1)时间内删除链表节点

    给定单向链表的一个节点指针,定义一个函数在O(1)时间删除该结点.假设链表一定存在,并且该节点一定不是尾节点. 样例 输入:链表 1->4->6->8 删掉节点:第2个节点即6(头节 ...

  8. 剑指offer五十六之删除链表中重复的结点

    一.题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  9. 剑指offer中经典的算法题之从头到尾打印链表

    话不多说上代码: 我自己的算法是: /** * public class ListNode { * int val; * ListNode next = null; * * ListNode(int ...

随机推荐

  1. POJ_3356——最短编辑距离,动态规划

    Description Let x and y be two strings over some finite alphabet A. We would like to transform x int ...

  2. java中Object相关的几个方法

    protected Object clone()创建并返回此对象的一个副本. String     toString()返回该对象的字符串表示. boolean equals(Object obj)指 ...

  3. 判断客户端浏览器是否安装了Flash插件

    <script> /*检测浏览器是否安装了插件(在IE 中无效)*/ function hasPlugin(name){ name = name.toLowerCase(); for(va ...

  4. 错误 是否保存对以下各项的更改 devenv.sin

    描述: 打开VS2012项目时,提示 是否保存对以下各项的更改 devenv.sin google了一下,没找到...纠结.百度了一下,竟然有的...擦一直以为google很给力,看来对于中文的解析不 ...

  5. Com原理及應用——Com對象和接口

    1.COM对象的理解 COM对象类似于C++语言中类的概念,类的每个实例代表一个COM对象,它也包括属性(即状态)和方法(即操作),状态反映对象的存在,方法就是接口. 2.COM对象的标识-CLSID ...

  6. Meth | ubuntu下安装与卸载软件方法

    1.通过deb包安装的情况: 安装.deb包: 代码:sudo dpkg -i package_file.deb反安装.deb包:代码:sudo dpkg -r package_name 2.通过ap ...

  7. [转] gdb 查看vector, list, map 内容

    转:http://blog.chinaunix.net/uid-13982689-id-34282.html先下载gdb_stl_utils.tar.gz, extract it, and run m ...

  8. C#递归搜索指定目录下的文件或目录

    诚然可以使用现成的Directory类下的GetFiles.GetDirectories.GetFileSystemEntries这几个方法实现同样的功能,但请相信我不是蛋疼,原因是这几个方法在遇上[ ...

  9. 在PHP中使用CURL,“撩”服务器只需几行——php curl详细解析和常见大坑

    在PHP中使用CURL,"撩"服务器只需几行--php curl详细解析和常见大坑 七夕啦,作为开发,妹子没得撩就"撩"下服务器吧,妹子有得撩的同学那就左拥妹子 ...

  10. nginx配置学习文章

    partOne 自我释义部分 我的是阿里云的ubuntu *******实际上感觉这里是基本配置,很用不到*********#定义其用户或用户组user www-data;#nginx的进程数,应当为 ...