面试题解(六)之普天C++笔试题

实现双向链表删除一个节点P,在节点P后插入一个节点 双向链表删除一个节点P template void list::delnode(int p){     int k=1;     listnode *ptr,*t;     ptr=first;     while(ptr->next!=NULL&&k!=p)     {         ptr=ptr->next;         k++;     } 阅读详情
题目:
   实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数
题解: 
  1. #include <stdio.h>
  2. typedef struct tmpNode{
  3.     struct tmpNode *prev;
  4.     struct tmpNode *next;
  5.     int value;
  6. }TNode;
  7. TNode *root=NULL;
  8. int main(void){
  9.     int value;
  10.     root=(TNode *)malloc(sizeof(TNode));
  11.     root->next=root;
  12.     root->prev=root;
  13.     root->value=0;
  14.     addNode();
  15.     addNode();
  16.     addNode();
  17.     addNode();
  18.     addNode();
  19.     addNode();
  20.     addNode();
  21.     addNode();
  22.     scanf("%d",&value);
  23.     insertNode(value);
  24.     viewNode();
  25.     scanf("%d",&value);
  26.     deleteNode(value);
  27.     viewNode();
  28.     scanf("%d",&value);
  29.     deleteNode(value);
  30.     viewNode();
  31.     return 0;
  32. }
  33. void addNode(){
  34.     TNode *temp;
  35.     TNode *newNode;
  36.     newNode=(TNode *)malloc(sizeof(TNode));
  37.     newNode->prev=newNode;
  38.     newNode->next=newNode;
  39.     newNode->value=0;
  40.     temp=root;
  41.     while(temp->next!=NULL&&temp->next!=temp){
  42.         temp=temp->next;
  43.     }
  44.     temp->next=newNode;
  45.     newNode->prev=temp;
  46.     newNode->value=temp->value+1;
  47. }
  48. void viewNode(){
  49.     TNode *temp;
  50.     temp=root;
  51.     while(1){
  52.         printf("this node addr is %p,and the value is %d/n",temp,temp->value);
  53.         if(temp->next==NULL||temp->next==temp)
  54.             break;  
  55.         temp=temp->next;
  56.     }
  57. }
  58. void insertNode(int value){
  59.     TNode *temp;
  60.     TNode *newNode;
  61.     temp=root;
  62.     newNode=(TNode *)malloc(sizeof(TNode));
  63.     newNode->next=newNode;
  64.     newNode->prev=newNode;
  65.     newNode->value=value;
  66.     while(temp->value<newNode->value&&temp->next!=NULL&&temp->next!=temp){
  67.         temp=temp->next;
  68.     }
  69.     if(temp->next!=NULL&&temp->next!=temp){
  70.         TNode *tmpNode=temp->next;
  71.         tmpNode->prev=newNode;
  72.         newNode->next=tmpNode;
  73.     }
  74.     newNode->prev=temp;
  75.     temp->next=newNode;
  76. }
  77. void deleteNode(int value){
  78.     TNode *temp;
  79.     temp=root;
  80.     while(temp->value!=value&&temp->next!=NULL&&temp->next!=temp){
  81.         temp=temp->next;
  82.     }
  83.     if(temp->value!=value)
  84.         return;
  85.     if(temp->prev!=NULL&&temp->prev!=temp){
  86.         TNode *prev;
  87.         prev=temp->prev;
  88.         if(temp->next!=NULL&&temp->next!=temp){
  89.             TNode *next;
  90.             next=temp->next;
  91.             prev->next=next;
  92.             next->prev=prev;        
  93.         }else{
  94.             prev->next=prev;
  95.         }
  96.     }else{
  97.         if(temp->next!=NULL&&temp->next!=temp){
  98.             TNode *next;
  99.             next=temp->next;
  100.             next->prev=next;
  101.             root=next;  
  102.         }else{
  103.             printf("can't delete root!/n");
  104.             return; 
  105.         }
  106.     }
  107.     free(temp);
  108.     temp=NULL;  
  109. }
编译环境: 
        gcc (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)

运行过程:
[explover@Explover 20081101]$ gcc -g pl.c -o pl
pl.c:34: warning: type mismatch with previous implicit declaration
pl.c:15: warning: previous implicit declaration of `addNode'
pl.c:34: warning: `addNode' was previously implicitly declared to return `int'
pl.c:49: warning: type mismatch with previous implicit declaration
pl.c:25: warning: previous implicit declaration of `viewNode'
pl.c:49: warning: `viewNode' was previously implicitly declared to return `int'
pl.c:59: warning: type mismatch with previous implicit declaration
pl.c:24: warning: previous implicit declaration of `insertNode'
pl.c:59: warning: `insertNode' was previously implicitly declared to return `int'
pl.c:78: warning: type mismatch with previous implicit declaration
pl.c:27: warning: previous implicit declaration of `deleteNode'
pl.c:78: warning: `deleteNode' was previously implicitly declared to return `int'
[explover@Explover20081101]$ ./pl
9
this node addr is 0x80499a8,and the value is 0
this node addr is 0x80499b8,and the value is 1
this node addr is 0x80499c8,and the value is 2
this node addr is 0x80499d8,and the value is 3
this node addr is 0x80499e8,and the value is 4
this node addr is 0x80499f8,and the value is 5
this node addr is 0x8049a08,and the value is 6
this node addr is 0x8049a18,and the value is 7
this node addr is 0x8049a28,and the value is 8
this node addr is 0x8049a38,and the value is 9
5
this node addr is 0x80499a8,and the value is 0
this node addr is 0x80499b8,and the value is 1
this node addr is 0x80499c8,and the value is 2
this node addr is 0x80499d8,and the value is 3
this node addr is 0x80499e8,and the value is 4
this node addr is 0x8049a08,and the value is 6
this node addr is 0x8049a18,and the value is 7
this node addr is 0x8049a28,and the value is 8
this node addr is 0x8049a38,and the value is 9
9
this node addr is 0x80499a8,and the value is 0
this node addr is 0x80499b8,and the value is 1
this node addr is 0x80499c8,and the value is 2
this node addr is 0x80499d8,and the value is 3
this node addr is 0x80499e8,and the value is 4
this node addr is 0x8049a08,and the value is 6
this node addr is 0x8049a18,and the value is 7
this node addr is 0x8049a28,and the value is 8

(本人水平有限,不足之处,请大家多多指正,谢谢!)    
不用Root!这些隐藏代码能一键开启安卓诊断端口(小米/OPPO/魅族机型实测) 本文提供了一份无需Root权限即可开启安卓手机诊断端口的实用指南。通过拨号盘输入特定隐藏代码,小米、OPPO、魅族等机型的用户可以一键激活此工程模式,从而连接电脑进行基带数据备份(如QCN文件)或故障排查。文章详细列出了各品牌指令、操作验证步骤,并强调了备份IMEI等关键数据的重要性与操作风险,旨在帮助用户在紧急情况下修复网络问题。 阅读详情

相关推荐

【气动弹性实战】基于Nastran与Patran的机翼颤振仿真:从模态分析到临界速度预测

本文详细介绍了基于Nastran与Patran的机翼颤振仿真全流程,从气动弹性问题解析、机翼建模技巧到模态分析与临界速度预测。通过实战案例展示如何利用SOL 145求解器进行颤振分析,并分享网格划分、材料属性设置等工程经验,帮助工程师有效解决飞行器设计中的气动弹性耦合问题。

weixin_33725722的博客 593

oracle存二进制proc,ProC中函数返回一个结构体时出错,请各位高手帮忙看一下!谢了...

查看: 5061|回复: 10[PRO*C]ProC中函数返回一个结构体时出错,请各位高手帮忙看一下!谢了电梯直达发表于 2004-10-18 16:01|只看该作者|倒序浏览|阅读模式part.c: In function `main':part.c:222: warning: assignment makes pointer from integer without a castpart.c:...

weixin_31036469的博客 333

医学影像分割入门:为什么U-Net至今仍是肝脏CT肿瘤分割的‘首选’?

本文探讨了U-Net在肝脏CT肿瘤分割中的持久优势,分析了其轻量化设计、对称架构和跳跃连接如何完美适配医学影像的小样本、高精度需求。通过对比实验和实战建议,揭示了U-Net在肝脏肿瘤分割任务中超越新模型的根本原因,并提供了PyTorch实现和部署技巧。

weixin_38166931的博客 518

GCC警告选项及使用

不符合ANSI/ISO的源代码 /* *  pedant.c - use -ansi, -pedantic or -pedantic-errors */ #include void main(void) {   long long int i = 0l;   printf("This is a non-conforming c program\n"); } 使用gcc ped

digent的专栏 7733

史上最全的Logisim运算器实验教程(基于华中科技大学计算机组成原理实验)

本博客是实现了Logisim的运算器设计,有具体的运算器设计的思路和运算器设计的电路,适合一步一步的按照思路做。

qq_62325622的博客 4万+

Flightmare实战:从零搭建强化学习无人机控制环境

本文详细介绍了从零开始搭建Flightmare强化学习无人机控制环境的完整流程。内容包括环境准备、核心库安装、依赖冲突解决,以及如何运行PPO算法示例进行训练与可视化测试。文章还提供了环境配置、自定义任务修改及常见问题的避坑指南,帮助开发者快速上手这一模块化的无人机RL仿真平台。

weixin_29081101的博客 356

c语言双向链表结点删除,实现在双向链表中删除一个节点P和在节点P后插入一个节点,写出这两个函数。...

}void insertNode(DListNode *p, int value){DListNode *node =new DListNode();node->value=value;DListNode *next = p->next;p->next=node;node->pre=p;node->next=next;if(next!=NULL)next->p...

weixin_35962107的博客 1917

【视频讲解】Python量子计算聚类Q-means:量子k-means算法分析电路数据实现可视化...

全文链接:https://tecdat.cn/?p=37821分析师:Yifan Zhang量子计算在近期已然成为一个频繁出现的热门概念。尽管它在大众认知以及互联网社区中备受瞩目,热度极高,然而就其实际能力而言,当前仍然存在诸多局限(点击文末“阅读原文”获取完整代码数据)。量子计算作为一个全新的领域,带来了相较于传统经典计算模式的重大范式转变。在量子计算的体系中,传统的 0 或 1 的经典比特被一...

拓端研究室TRL 1456

c/c++笔试面试题(5)

.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。 2.写一个函数,将其中的/t都转换成4个空格。 3.Windows程序的入口是哪里?写出Windows消息机制的流程。 4.如何定义和实现一个类的成员函数为回调函数? 5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。 6.C++里面如何声明const void f(void)函数为C程序中的库函数? 7

zhaojianjun的专栏 2180

YOLOv11改进 | 注意力篇 | YOLOv11引入24年动态卷积块注意力(Dynamic-CBAM),并构建C2PSA_DynamicCBAM

1.Dynamic-CBAM介绍1.1 摘要:重度抑郁症是一种普遍而严重的心理健康状况,对您的情绪,思想,行动和对世界的整体感知产生负面影响。由于抑郁症的症状不明显,确定一个人是否抑郁是很复杂的。然而,他们的声音可能是我们可以识别抑郁症迹象的因素之一。抑郁的人会表现出不适、悲伤,他们可能说话缓慢、颤抖,声音中失去情感。在这项研究中,我们提出了动态卷积块注意力模块(DynamicCBAM),用于在注意力-GRU网络中通过分析人类的音频信号来分类情感。

tsg6698的博客 1002

YOLOv11改进策略【注意力机制篇】| SE、CBAM、ECA、CA、Swin Transformer等注意力机制全面解析与应用

本文详细介绍了五种主流的注意力机制及其在YOLOv11中的应用。通过合理的模块选择和位置部署,注意力机制能够显著提升目标检测性能。

QQ_778132974的博客 873

想问一下拿到冠宇offer的老哥,这个就代表过了吗?

不能自主实习被安排到一个单位实习了(具体不透露了)已被学校卖,三个月但是实习要签订一个承诺书,各种要我承担什么责任,给我一种黑奴一样条款无薪资,离学校很远,要自。上周签约了,公司规模还挺大的,地点也是我想要去的,薪资对我来说还是挺满意的,一年15w+,965,有加班,但是不严重,双非鼠鼠已经很满意了。前两天得了一个小公司的保底offer,待遇也有大厂中等水平了,也满足了,收心了,焦虑了几个月,每天打开牛客都怕被推送到拿offer的帖子,该好好玩游戏了,CSG。9.7刚开,按投递顺序面试发offer,速投!

每天多一点干货 329

【Frida Android】实战篇4:SSL Pinning 证书绑定绕过 Hook 教程(一)

在前两章中,我们学习了中间人抓包与 Hook 抓包的基础方法,这些方法在理想环境下能够有效获取网络请求数据。但在实际的企业级应用中,出于安全防护需求,很多 APP 会启用证书绑定(SSL Pinning)机制。这种机制会让客户端对服务器证书的校验更为严格,导致常规的抓包方法(即使将 BurpSuite/Charles 证书安装到系统信任区)也无法生效。因此,从本章开始,我们将系统学习 SSL Pinning 机制的绕过技术。SSL Pinning(证书绑定)是客户端校验服务器身份的进阶安全机制。

水滴石穿 1610

双向链表,添加,删除一个节点

链表有几种,大致分为:单链表, 双向链表,循环链表,静态链表。这里为大家简单介绍双向链表节点的添加,删除。提示:以下是本篇文章正文内容,下面案例可供参考双向指针并不难,大家要多加理解。

wuyiyu_的博客 4405

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C++ 基础概念(二)

 链表和数组的差别A 从逻辑结构来看A-1. 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当     数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。 A-2. 链表动态地进行存储分配,能适应数据动态地增减的情况,且能方便地插入、     删除数据项。(数组中插入、删除数据项时,需要移动其他数据项)B 从内存存储来看B-1.

zhongjie的专栏 2290

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

编写C函数,实现双向链表删除一个节点P。

编写C函数,实现双向链表删除一个节点P。 //删除操作 Status ListDelete_Dul(DuLinkList &amp;L,int i,ElemType &amp;e) { if(!(p=GetElemP_DuL(L,i))) return Error; e=p-&gt;data; p-&gt;prior-&gt;next=p-&gt;next; ...

今天比昨天进步一点点 4822

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

双链表删除节点

编写一个程序,从双链表中移除一个节点,函数的原型如下 int dll_remove(struct NODE *rootp, struct NODE *node); 你可以假设节点数据结构在头文件double_linked_list_node.h文件中定义,函数第一个参数是一个指向包含链表根指针的节点的指针,第二个参数是个指向欲移除的节点的指针,如果链表并不包含欲移除的指针,函数就返回假,否则函数移除该节点并返回真。 遇到链表操作的题目,第一步就是画一个链表图,然后理清指针指向然后再转化成代码

Turtle's trail 6811

[数据结构]双链表删除结点P的操作

算法的思想就是:把P的前驱

Crazy Android 1万+

删除双向链表的一个指定节点

双向链表的简单操作,供初学者学习

wintree的专栏 1万+

GCC-3.4.6源代码学习笔记(107)

<br />5.12.3.2.1.2.  完成解析<br />5.12.3.2.1.2.1.          延迟的内联函数解析<br />对类“SingleThreaded”余下方法的解析基本上与我们已见到的一样。因此我们跳过这些声明,并假设现在解析器看到了类结尾的“}”。除了与结构体“Lock”相似的处理外,类“SingleThreaded”,作为最顶层的类,将经受如下的处理。<br /> <br />cp_parser_class_specifier (continue)<br /> <br /

wuhui_gdnt的专栏 1293

【ACMclub周赛5】Problem E——TSP旅行商问题

题目:点击打开链接 题目简化一下就是一个旅行者可以在任意一点出发,遍历所有顶点后回到原点,问可以走的最短路程。很著名的NP-HARD旅行商问题。 TSP问题最简单的求解方法是枚举法,时间复杂度是O(n!), 其余的解都是无法证明的最优近似解,但是可以直接拿来用,此外还有模拟退火,floyd+DP,Edmonds-Johnson等各种方法,贴个模板吧,可以用poj 2404练一下手。

圣人不仁,使草胜豆苗稀。 4007

编译时出现如下警告“implicit declaration of function Set_Disp_Port_SpeedMode"

     今天编译子模块代码时出现如下警告:"implicit declaration of function Set_Disp_Port_SpeedMode".找了半天不懂得问题出在哪里,到google上一搜,终于发现问题所在了(忘在Set_ext.h内声明函数了)。现把这篇帖子转如下:头文件不是可有可无的作者: Dai Yuwen我看到有些程序员用C语言写程序的时候,不太了解头文件的作

坐井观天 3万+

中点站

  话说今天已经是周三了,好快啊。中间点,我得踩个点呀!时光的匆匆,带走了我无限的美好时光。等待下一站的来临。不时的来些小插曲。想想这个星期从开始现在所做的事情都是自己力所能及的。做好自己分内事,慢慢在学习中成长。   或许有很多事情的干扰,会使我受到阻挠。但是坚持自己的观点,会让我感受到那份执着。对什么事不要分心,有好有坏的承受。自己体会的也更多。我想起了某些事,开心的或不开心的,那...

153

普天C++笔试题

  普天是南京一家通信公司,全称为:南京普天通信股份有限公司,公司网址为:http://www.postel.com.cn 网上流传一套普天C++笔试题,网上搜集到的答案公布与此,仅供参考。1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;答://假设线性表的双向链表存储结构typedef struct DulNode{    struct DulNode *prio

兵无常势 水无常形 1452
上一篇: 面试题解(五)之联想笔试题
下一篇: Sizeof与Strlen的区别与联系
explover
博客等级 码龄24年 3粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值