【IT笔试面试题整理】反转链表

本文详细介绍了链表反转的两种方法,并提供了相应的代码实现。通过实例演示,帮助读者理解链表操作和递归思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【试题描述】定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点

【参考代码】

方法一:

 1     public static Link reverseLinkList(Link head)
 2     {
 3         if (head == null || head.next == null)
 4             return head;
 5 
 6         Link pre = null;
 7         Link cur = head;
 8         Link back = head.next;
 9 
10         while (back != null)
11         {
12             cur.next = pre;
13             pre = cur;
14             cur = back;
15             back = back.next;
16         }
17         cur.next = pre; // 当current为最后一个节点时,back为null,所以要再指向前节点
18         head = cur;
19 
20         return head;
21     }

 

方法二:

 1     public static Link reverseLinkList2(Link head)
 2     {
 3         if (head == null || head.next == null)
 4             return head;
 5         Link p1 = head;
 6         Link p2 = p1.next;// p2其实记录的下一步递归过程后的尾结点
 7         head = reverseLinkList2(p2);
 8         p2.next = p1;
 9         p1.next = null;
10         return head;
11     }

 

转载于:https://www.cnblogs.com/WayneZeng/archive/2013/04/11/3015211.html

│ C++面试题大全.doc │ cc++面试题汇总.doc │ java面试题集.txt │ ├─C++笔试题 │ (1)C,C++经典问题,及面试笔试题 .txt │ (2)cc++.txt │ (3)笔试题2.doc │ (4)笔试题.doc │ (5)想成为嵌入式程序员应知道的0x10个基本问题.txt │ (6)网络.操作系统.数据库.txt │ (7)如果你觉得你够牛就回答这几个问题.txt │ (8)以上文档中的明显错误.txt │ c,c++笔试.txt │ CC++笔试题系列.txt │ IT职场中外企面试最爱提的问题TOP10 .txt │ memset.memmove.strcmp.txt │ TC使用.txt │ 介绍自己的优缺点有技巧 .txt │ 多线程编程之一——问题提出.txt │ 多线程编程之三——线程间通讯.txt │ 多线程编程之二——MFC中的多线开发.txt │ 多线程编程之四——线程的同步.txt │ 排序.txt │ 最常问问题和最佳答案.txt │ 求职信 .txt │ 深入分析Windows和Linux动态库应用异同 .txt │ 用VC++5.0 定 制 和 调 用 动 态 链 接 库 .txt │ 聘面谈记录切忌随心所欲.txt │ 英语面试.txt │ 范式间区别.txt │ 金山_人力资源试题库_软件工程.doc │ 金山问题.txt │ 面试常见37个问题.doc │ 面试常见问题解析 .txt │ 面试应答中最忌讳的是什么.doc │ ├─java笔试题大集合及答案(另附各大公司笔试题) │ EJB方面.doc │ Java基础方面.doc │ 代码编程题.doc │ 应聘Java笔试时可能出现问题及其答案.doc │ 求职笔试大全.pdf │ 用户必读.txt │ 线程编程方面.doc │ └─面试题java │ Core Javaceshiti.doc │ c_c++_mianshi.txt │ j2ee面试笔试题大汇总.txt │ java中的易混问题收集 -- 最大的IT资源网.txt │ JAVA常见问题.txt │ Java常见问题集锦 -- 最大的IT资源网.txt │ JAVA问题.txt │ Java陷阱一箩筐----面试题集.doc │ Java陷阱一箩筐----面试题集[zt].txt │ JAVA面试题.txt │ JAVA面试题集(1) -- 最大的IT资源网.txt │ JAVA面试题集(2) -- 最大的IT资源网.txt │ JAVA面试题集(3) -- 最大的IT资源网.txt │ JAVA面试题集(4) -- 最大的IT资源网.txt │ JAVA面试题集(5) -- 最大的IT资源网.txt │ JAVA面试题集(6) -- 最大的IT资源网.txt │ JAVA面试题集(7) -- 最大的IT资源网.txt │ JAVA面试题集(8) -- 最大的IT资源网.txt │ mian shi ti da an 2.txt │ mian shi ti da an1.txt │ mian shi ti.txt │ mianShi.pdf │ mst.pdf │ 追MMJava的23种设计模式.txt │ 面试题.doc │ └─mianshiti 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt Java_util_package.txt java_util_test.txt
1.已知strcpy 函数的原型是: char *strcpy(char *strDest, const char *strSrc); 其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数, 请编写函数 strcpy 答案: char *strcpy(char *strDest, const char *strSrc) { if ( strDest == NULL || strSrc == NULL) return NULL ; if ( strDest == strSrc) return strDest ; char *tempptr = strDest ; while( (*strDest++ = *strSrc++) != ‘\0’) ; return tempptr ; } 3.12 main 函数执行以前,还会执行什么代码? (Autodesk) 答案:全局对象的构造函数会在main 函数之前执行。 3.13 描述内存分配方式以及它们的区别。 (Autodesk , Microsoft) 答案:1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块 内存在程序的整个运行期间都存在。例如全局变量,static 变量。 (2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上 创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理 器的指令集。 (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申 请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内 存的生存期由我们决定,使用非常灵活,但问题也最多。 3.14 什么是虚拟存储器?virtual memory 怎样映射到physical memory?页面替换 算法有哪些? (Microsoft) 见操作系统 p238 页。掌握的页面替换算法NRU,FIFO,第二次机会页面替换 算法,LRU 3.15 有四个同样的容器,里面装满了粒数相同的药丸,正常药丸的质量为m,变 质药丸的质量为m+1,现在已知这四个容器中,有一个装的全是变质药丸,用电 子秤只称一次,找出哪个容器装的是变质药丸(Microsoft) 答案:把四个容器依次编号为1、2、3、4,然后从中分别取出1、2、3、4 粒药 丸,称这10 粒药丸的质量,如果质量为10m+1,则说明第一个容器装的是变质药 丸,如果为10m+2 则说明第二个装的变质药丸,依次类推。 3.16 比较一下C++中static_cast 和 dynamic_cast 的区别。 (Autodesk) 。。。。。。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值