C++实现O(1)时间内删除链表结点
- /*
- * 删除链表节点.cpp
- *
- * Created on: 2018年4月13日
- * Author: soyo
- */
- #include<iostream>
- using namespace std;
- struct node
- {
- int data;
- node * next;
- };
- node * create_head(node *p,int v)
- {
- p=new node;
- p->data=v;
- p->next=NULL;
- return p;
- }
- node * add_list(node*head,int n)
- {
- node *p,*p1;
- p=head;
- p1=new node;
- p1->data=n;
- p1->next=NULL;
- while(p->next!=NULL)
- p=p->next;
- p->next=p1;
- return head;
- }
- void println(node *head)
- {
- if(head==NULL)
- return;
- while(head!=NULL)
- {
- cout<<head->data<<" ";
- head=head->next;
- }
- cout<<endl;
- }
- void deletNode(node**head,node*deleteNode)
- {
- if(head==NULL||deleteNode==NULL)
- return;
- if(deleteNode->next!=NULL) //要删除的结点不是尾结点
- {
- node *nextNode=deleteNode->next;
- deleteNode->data=nextNode->data;
- deleteNode->next=nextNode->next;
- delete nextNode;
- nextNode=NULL;
- }
- else if(*head==deleteNode) //只有一个结点
- {
- delete deleteNode;
- deleteNode=NULL;
- *head=NULL;
- }
- else
- {
- node *p=*head;
- while(p->next!=deleteNode) //删除的结点为尾结点
- {
- p=p->next;
- }
- p->next=NULL;
- delete deleteNode;
- deleteNode=NULL;
- }
- }
- int main()
- {
- node *p,*head;
- int data=;
- head=create_head(p,data);
- int a[]={,,,,,};
- int c=sizeof(a)/sizeof(int);
- for(int i=;i<c;i++)
- {
- head=add_list(head,a[i]);
- }
- println(head);
- node *deNode=head;
- while(deNode->data!=)
- {
- deNode=deNode->next;
- }
- node**Head;
- Head=&head;
- deletNode(Head,deNode); //删除值为7的结点
- println(head);
- int a1=;
- int *p1;
- p1=&a1;
- cout<<*p1<<endl;
- int **p2;
- p2=&p1;
- cout<<**p2<<endl;
- }
结果:
C++实现O(1)时间内删除链表结点的更多相关文章
- 【编程题目】在 O(1)时间内删除链表结点
60.在 O(1)时间内删除链表结点(链表.算法).题目:给定链表的头指针和一个结点指针,在 O(1)时间删除该结点.链表结点的定义如下:struct ListNode{int m_nKey;List ...
- 数据结构——算法之(027)( 在O(1)时间内删除链表结点)
[申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出. 联系邮箱:Mr_chenping@163.com] 题目:在O(1)时间内删除链表结点.且不知道链表头 题目分析: 1.把要删除节点的下 ...
- (剑指Offer)面试题13:在O(1)时间内删除链表结点
题目: 在给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间内删除该结点.链表结点与函数的定义如下: struct ListNode{ int val; ListNode* next; } ...
- P13在O(1)时间内删除链表结点
package offer; //在 O(1)时间删除链表结点 public class Problem13 { public static void main(String[] args) { Li ...
- 在O(1)时间内删除链表结点 【微软面试100题 第六十题】
题目要求: 给定链表的头指针和一个结点指针,在O(1)时间删除该结点. 参考资料:剑指offer第13题. 题目分析: 有几种情况: 1.删除的结点是头结点,且链表不止一个结点: 2.删除的结点是头结 ...
- 第六十题(在O(1)时间内删除链表结点)
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点. 思路:将待删除节点下一个节点的数据赋给当前节点.删除下一个节点就可以.
- JZ-069-在 O(1) 时间内删除链表节点
在 O(1) 时间内删除链表节点 题目描述 在 O(1) 时间内删除链表节点. 方案:如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复 ...
- 剑指Offer面试题:12.在O(1)时间删除链表结点
一.题目:在O(1)时间删除链表结点 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点. 原文采用的是C/C++,这里采用C#,节点定义如下: public class ...
- 【面试题013】在O(1)时间删除链表结点
[面试题013]在O(1)时间删除链表结点 我们要删除结点i,我们可以把结点i的下一个结点j的内容复制到结点i,然后呢把结点i的指针指向结点j的下一个结点.然后在删除结点j. 1.如果结点i位于链表 ...
随机推荐
- MACBOOK 忘记密码
如果没有系统安装盘,可以采用下面的几种方法:首先,启动机器,启动时按住Apple和S键,以单用户模式(single user mode)进入系统.输入:mount -uv / 然后回车.接下来可以采用 ...
- java集合系列之LinkedList源码分析
java集合系列之LinkedList源码分析 LinkedList数据结构简介 LinkedList底层是通过双端双向链表实现的,其基本数据结构如下,每一个节点类为Node对象,每个Node节点包含 ...
- 【lombok】使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法
错误如题:使用lombok注解,在代码编写过程中可以调用到get/set方法,但是在编译的时候无法通过,提示找不到get/set方法 报错如下: 解决方法: 1.首先查看你的lombok插件是否下载安 ...
- 线性表的顺序存储和链式存储的实现(C)
//线性表的顺序存储 #include <stdio.h>typedef int DataType;#define MaxSize 15//定义顺序表typedef struct { Da ...
- XStream 数组(List)输出结构
<!-- 期望的DOM树 --> <Articles> <item> <Title>微信SDK初步结构</Title> <Descri ...
- PS 如何使用液化工具给人物减肥
进入"液化", 有个收缩按钮, 可以选择范围大小, 想瘦哪里, 瘦多少都OK 最终效果图 1.打开原图,进入通道面板,选择菜单图像计算,计算红色通道,保留人物见图. ...
- android-problem——remount of /system failed: Read-only file system
adb remount后仍旧不能对system进行读写.需要进行adb disable-verity 在Android6.0 (Android M)userdebug版本上(eng版本不存在该问题), ...
- JAVA设计模式之 原型模式【Prototype Pattern】
一.概述: 使用原型实例指定创建对象的种类,而且通过拷贝这些原型创建新的对象. 简单的说就是对象的拷贝生成新的对象(对象的克隆),原型模式是一种对象创建型模式. 二.使用场景: 创建新的对象能够通过对 ...
- C# 通过比对哈希码判断两个文件内容是否相同
1.使用System.security.Cryptography.HashAlgorithm类为每个文件生成一个哈希码,然后比较两个哈希码是否一致. 2. 在比较文件内容的时候可以采用好几种方法.例如 ...
- 把node加入master节点时,日志内容分析
root@node1:~# kubeadm --token bggbum.mj3ogzhnm1wz07mj --discovery-token-ca-cert-hash sha256:8f02f833 ...