C++/C面试题(2)
(1)单向链表操作
1)在链表尾部插入一个节点
void addNewNodeTail(ListNode **HeadNode, int value)//在链表尾部插入一个节点
{
ListNode* newNode = new ListNode();
newNode->Value = value;
newNode->next = nullptr;
if (*HeadNode == nullptr)//如果这个链表是空链表
*HeadNode = newNode;
else
{
ListNode*pNode = *HeadNode;
while (pNode->next != nullptr)//找到链表的最后一个节点
pNode = pNode->next;
pNode->next = newNode;//在链表尾部插入节点
}
}
//删除一个节点
void deleteNode(ListNode** HeadNode, int value)
{
if (HeadNode == nullptr || *HeadNode == nullptr)//首先考虑不是空链表
return;
ListNode* ptoDelectNode = nullptr;//指针指向要删除的节点
if ((*HeadNode)->Value == value)//如果头节点是要删除的节点
{
ptoDelectNode = *HeadNode;
*HeadNode = (*HeadNode)->next;
}
else
{
ListNode* pNode = *HeadNode;
while ((pNode->next->Value != value)&&(pNode->next!=nullptr))
pNode = pNode->next;
if ((pNode->next->Value == value) && (pNode->next != nullptr))
{
ptoDelectNode = pNode->next;
pNode->next = pNode->next->next;
}
if (ptoDelectNode != nullptr)
{
delete ptoDelectNode;
ptoDelectNode = nullptr;
}
else
{
printf("there is no matching value in this list\n");
}
}
}
//在第num个位置插入一个节点
void insertNode(ListNode** HeadNode, int value,int num)//在链表中第num个节点之前插入一个节点
{
if (value == NULL)
return;
ListNode* newInsertNode = new ListNode();
newInsertNode->Value = value;
newInsertNode->next = nullptr;
ListNode* pNode = *HeadNode;
if (*HeadNode == nullptr||num==0)
*HeadNode = newInsertNode;
else
{
for (int i = 0;i < num-1;i++)//找到位置
pNode = pNode->next;
pNode->next = newInsertNode;//插入
newInsertNode->next = pNode->next->next;
}
}
C++/C面试题(2)的更多相关文章
- .NET面试题系列[8] - 泛型
“可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用.“ - Jon Skeet .NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] ...
- 关于面试题 Array.indexof() 方法的实现及思考
这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...
- 对Thoughtworks的有趣笔试题实践
记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...
- 从阿里巴巴笔试题看Java加载顺序
一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...
- JAVA面试题
在这里我将收录我面试过程中遇到的一些好玩的面试题目 第一个面试题:ABC问题,有三个线程,工作的内容分别是打印出"A""B""C",需要做的 ...
- C++常考面试题汇总
c++面试题 一 用简洁的语言描述 c++ 在 c 语言的基础上开发的一种面向对象编程的语言: 应用广泛: 支持多种编程范式,面向对象编程,泛型编程,和过程化编程:广泛应用于系统开发,引擎开发:支持类 ...
- .NET面试题系列[4] - C# 基础知识(2)
2 类型转换 面试出现频率:主要考察装箱和拆箱.对于有笔试题的场合也可能会考一些基本的类型转换是否合法. 重要程度:10/10 CLR最重要的特性之一就是类型安全性.在运行时,CLR总是知道一个对象是 ...
- 我们公司的ASP.NET 笔试题,你觉得难度如何
本套试题共8个题,主要考察C#面向对象基础,SQL和ASP.NET MVC基础知识. 第1-3题会使用到一个枚举类,其定义如下: public enum QuestionType { Text = , ...
- 我设计的ASP.NET笔试题,你会多少呢
本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...
- 猫哥网络编程系列:详解 BAT 面试题
从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...
随机推荐
- dagger2 重点笔记
官方架构例子,里面有个dagger2的结合的例子 https://github.com/googlesamples/android-architecture https://google.github ...
- Rabbit五种消息队列学习(一) – 总述
RabbitMQ支持五种消息传递类型,分别如下图所示: 上图中显示6中消息队列分别为: 1.简单队列 一个生产者将消息放到队列中,一个消费者监听队列 2.工作队列(Work queues) 一个生产者 ...
- 【PHP】解析PHP中的变量
php是一门脚本语言,同时php中的变量类型也是弱语言类型,这和javascript非常相似.笔者在这里说一说PHP中的变量知识点. 1. 引用类型变量 看下面的案例: <?php class ...
- Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat
Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 ...
- [转载] Conv Nets: A Modular Perspective
原文地址:http://colah.github.io/posts/2014-07-Conv-Nets-Modular/ Conv Nets: A Modular Perspective Posted ...
- [python] ThreadPoolExecutor线程池 python 线程池
初识 Python中已经有了threading模块,为什么还需要线程池呢,线程池又是什么东西呢?在介绍线程同步的信号量机制的时候,举得例子是爬虫的例子,需要控制同时爬取的线程数,例子中创建了20个线程 ...
- 北京Java笔试题整理
北京Java笔试题整理 1.什么是java虚拟机?为什么ava被称作是"平台无关的编程语言? 答:Java虚拟机可以理解为一个特殊的"操作系统",只是它连接的不是硬件,而 ...
- Virtual配置
没有ifconfig yum upgrade yum install net-tools yum源配置: https://jingyan.baidu.com/article/215817f7aef2e ...
- VM虚拟机下安装CentOS_6.5_x64
在开始Linux的学习之前,我们必须要有一个实验环境.这里我选择了安装CentOS-6.5-x86_64的Minimal版本,大家也可以选择安装其他的Linux发行版.选择CentOS主要还是因为它比 ...
- Linux解压缩命令tar
tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...