1. /*
  2. * 删除链表节点.cpp
  3. *
  4. * Created on: 2018年4月13日
  5. * Author: soyo
  6. */
  7. #include<iostream>
  8. using namespace std;
  9. struct node
  10. {
  11. int data;
  12. node * next;
  13. };
  14. node * create_head(node *p,int v)
  15. {
  16. p=new node;
  17. p->data=v;
  18. p->next=NULL;
  19. return p;
  20. }
  21. node * add_list(node*head,int n)
  22. {
  23. node *p,*p1;
  24. p=head;
  25. p1=new node;
  26. p1->data=n;
  27. p1->next=NULL;
  28. while(p->next!=NULL)
  29. p=p->next;
  30. p->next=p1;
  31. return head;
  32. }
  33. void println(node *head)
  34. {
  35. if(head==NULL)
  36. return;
  37. while(head!=NULL)
  38. {
  39. cout<<head->data<<" ";
  40. head=head->next;
  41. }
  42. cout<<endl;
  43. }
  44. void deletNode(node**head,node*deleteNode)
  45. {
  46. if(head==NULL||deleteNode==NULL)
  47. return;
  48. if(deleteNode->next!=NULL) //要删除的结点不是尾结点
  49. {
  50. node *nextNode=deleteNode->next;
  51. deleteNode->data=nextNode->data;
  52. deleteNode->next=nextNode->next;
  53. delete nextNode;
  54. nextNode=NULL;
  55. }
  56. else if(*head==deleteNode) //只有一个结点
  57. {
  58. delete deleteNode;
  59. deleteNode=NULL;
  60. *head=NULL;
  61. }
  62. else
  63. {
  64. node *p=*head;
  65. while(p->next!=deleteNode) //删除的结点为尾结点
  66. {
  67. p=p->next;
  68. }
  69. p->next=NULL;
  70. delete deleteNode;
  71. deleteNode=NULL;
  72. }
  73.  
  74. }
  75. int main()
  76. {
  77. node *p,*head;
  78. int data=;
  79. head=create_head(p,data);
  80. int a[]={,,,,,};
  81. int c=sizeof(a)/sizeof(int);
  82. for(int i=;i<c;i++)
  83. {
  84. head=add_list(head,a[i]);
  85. }
  86. println(head);
  87. node *deNode=head;
  88. while(deNode->data!=)
  89. {
  90. deNode=deNode->next;
  91. }
  92. node**Head;
  93. Head=&head;
  94. deletNode(Head,deNode); //删除值为7的结点
  95. println(head);
  96. int a1=;
  97. int *p1;
  98. p1=&a1;
  99. cout<<*p1<<endl;
  100. int **p2;
  101. p2=&p1;
  102. cout<<**p2<<endl;
  103.  
  104. }

结果:

C++实现O(1)时间内删除链表结点的更多相关文章

  1. 【编程题目】在 O(1)时间内删除链表结点

    60.在 O(1)时间内删除链表结点(链表.算法).题目:给定链表的头指针和一个结点指针,在 O(1)时间删除该结点.链表结点的定义如下:struct ListNode{int m_nKey;List ...

  2. 数据结构——算法之(027)( 在O(1)时间内删除链表结点)

    [申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出. 联系邮箱:Mr_chenping@163.com] 题目:在O(1)时间内删除链表结点.且不知道链表头 题目分析: 1.把要删除节点的下 ...

  3. (剑指Offer)面试题13:在O(1)时间内删除链表结点

    题目: 在给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间内删除该结点.链表结点与函数的定义如下: struct ListNode{ int val; ListNode* next; } ...

  4. P13在O(1)时间内删除链表结点

    package offer; //在 O(1)时间删除链表结点 public class Problem13 { public static void main(String[] args) { Li ...

  5. 在O(1)时间内删除链表结点 【微软面试100题 第六十题】

    题目要求: 给定链表的头指针和一个结点指针,在O(1)时间删除该结点. 参考资料:剑指offer第13题. 题目分析: 有几种情况: 1.删除的结点是头结点,且链表不止一个结点: 2.删除的结点是头结 ...

  6. 第六十题(在O(1)时间内删除链表结点)

    题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点. 思路:将待删除节点下一个节点的数据赋给当前节点.删除下一个节点就可以.

  7. JZ-069-在 O(1) 时间内删除链表节点

    在 O(1) 时间内删除链表节点 题目描述 在 O(1) 时间内删除链表节点. 方案:如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复 ...

  8. 剑指Offer面试题:12.在O(1)时间删除链表结点

    一.题目:在O(1)时间删除链表结点 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 原文采用的是C/C++,这里采用C#,节点定义如下: public class ...

  9. 【面试题013】在O(1)时间删除链表结点

    [面试题013]在O(1)时间删除链表结点  我们要删除结点i,我们可以把结点i的下一个结点j的内容复制到结点i,然后呢把结点i的指针指向结点j的下一个结点.然后在删除结点j. 1.如果结点i位于链表 ...

随机推荐

  1. MACBOOK 忘记密码

    如果没有系统安装盘,可以采用下面的几种方法:首先,启动机器,启动时按住Apple和S键,以单用户模式(single user mode)进入系统.输入:mount -uv / 然后回车.接下来可以采用 ...

  2. java集合系列之LinkedList源码分析

    java集合系列之LinkedList源码分析 LinkedList数据结构简介 LinkedList底层是通过双端双向链表实现的,其基本数据结构如下,每一个节点类为Node对象,每个Node节点包含 ...

  3. 【lombok】使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法

    错误如题:使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法 报错如下: 解决方法: 1.首先查看你的lombok插件是否下载安 ...

  4. 线性表的顺序存储和链式存储的实现(C)

    //线性表的顺序存储 #include <stdio.h>typedef int DataType;#define MaxSize 15//定义顺序表typedef struct { Da ...

  5. XStream 数组(List)输出结构

    <!-- 期望的DOM树 --> <Articles> <item> <Title>微信SDK初步结构</Title> <Descri ...

  6. PS 如何使用液化工具给人物减肥

    进入"液化", 有个收缩按钮, 可以选择范围大小, 想瘦哪里, 瘦多少都OK   最终效果图     1.打开原图,进入通道面板,选择菜单图像计算,计算红色通道,保留人物见图.   ...

  7. android-problem——remount of /system failed: Read-only file system

    adb remount后仍旧不能对system进行读写.需要进行adb disable-verity 在Android6.0 (Android M)userdebug版本上(eng版本不存在该问题), ...

  8. JAVA设计模式之 原型模式【Prototype Pattern】

    一.概述: 使用原型实例指定创建对象的种类,而且通过拷贝这些原型创建新的对象. 简单的说就是对象的拷贝生成新的对象(对象的克隆),原型模式是一种对象创建型模式. 二.使用场景: 创建新的对象能够通过对 ...

  9. C# 通过比对哈希码判断两个文件内容是否相同

    1.使用System.security.Cryptography.HashAlgorithm类为每个文件生成一个哈希码,然后比较两个哈希码是否一致. 2. 在比较文件内容的时候可以采用好几种方法.例如 ...

  10. 把node加入master节点时,日志内容分析

    root@node1:~# kubeadm --token bggbum.mj3ogzhnm1wz07mj --discovery-token-ca-cert-hash sha256:8f02f833 ...