【导语】下面是小编整理的笔试题单向链表(共8篇),欢迎阅读分享,希望对大家有所帮助。
笔试题(单向链表)
单向链表的`反转是一个经常被问到的一个面试题,也是一个非常基础的问题,比如一个链表是这样的:
1->2->3->4->5
通过反转后成为5->4->3->2->1。
最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然
后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:
struct linka {
int data;
linka* next;
};
void reverse(linka*& head) {
if(head ==NULL)
return;
linka *pre, *cur, *ne;
pre=head;
cur=head->next;
while(cur)
{
ne = cur->next;
cur->next = pre;
pre = cur;
cur = ne;
}
head->next = NULL;
head = pre;
}
笔试题(单向链表的反转)
单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题,比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。
最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:
1. struct linka {
2. int data;
3. linka* next;
4. };
5. void reverse(linka*& head) {
6. if(head ==NULL)
7. return;
8. linka *pre, *cur, *ne;
9. pre=head;
10. cur=head->next;
11. while(cur)
12. {
13. ne = cur->next;
14. cur->next = pre;
15. pre = cur;
16. cur = ne;
17. }
18. head->next = NULL;
19. head = pre;
20. }
还有一种利用递归的方法,
《笔试题(单向链表的`反转)》()。这种方法的基本思想是在反转当前节点之前先调用递归函数反转后续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。算法的源代码如下:
1. linka* reverse(linka* p,linka*& head)
2. {
3. if(p == NULL || p->next == NULL)
4. {
5. head=p;
6. return p;
7. }
8. else
9. {
10. linka* tmp = reverse(p->next,head);
11. tmp->next = p;
12. return p;
13. }
14. }
笔试题(链表)
1. 频繁的插入删除操作使用什么结构比较合适,链表还是数组?
答案:链表
2. *p=NULL *p=new char[100] sizeof(p)各为多少?
答案:都为4,因为都是指针类型,所占存储空间必然为4。
3. 顺序查找的平均时间
答案:(1+2+3+…+n)/n = (n+1)/2
4. for(i=0,sum=0; i<10; ++i,sum+=i);的运行结果
答案:sum = 55
5. 不能做switch的参数类型是:
答案:switch的参数不能为浮点型,
6.不使用其他变量,交换两个整型a,b的'值
答案:x = x+y; y = x-y; x = x-y
7. 写出float x 与“零值”比较的if语句。
if(x>=0.000001 && x<=-0.000001)(x不为0的比较)
float: 6位精度
double: 16位精度
8.两个数相乘,小数点后位数没有限制,请写一个高精度算法
笔试题(链表反向)
1.设计一个重采样系统,说明如何anti-alias,
2.y1(n)=x(2n),y2(n)=x(n/2),问:
如果y1为周期函数,那么x是否为周期函数?
如果x为周期函数,那么y1是否为周期函数?
如果y2为周期函数,那么x是否为周期函数?
如果x为周期函数,那么y2是否为周期函数?
3.如果模拟信号的带宽为5kHz,要用8k的采样率,怎么办。
4.某个程序在一个嵌入式系统(200M的`CPU,50M的SDRAM)中已经最优化了,换到另一个系统(300M的CPU,50M的SDRAM)中运行,还需要优化吗?
5.x^4+a*x^3+x^2+c*x+d最少需要做几次乘法。
6.三个float:a,b,c
问值:
(a+b)+c==(b+a)+c
(a+b)+c==(a+c)+b
7.把一个链表反向填空。
8.下面哪种排序法对12354最快?
A. quick sor
B. buble sort
C. merge sort
9.哪种结构平均来讲获取一个值最快?
A. binary tree
B. hash table
C. stack
10.#include“stdafx.h”
#include struct bit
{ int a:3;
int b:2;
int c:3;
};
int main(int argc, char* argv[])
{
bit s;
char *c = (char*)&s;
*c = 0x99;
cout <<
s.a <<<<<
return 0;
}
Output:?
链表节点定义如下
struct ListNode
{
long id;
struct ListNode* next;
}
写一个返回下一个节点的函数,没有的话返回0
struct ListNode* ListNext(struct ListNode* cur);
写一个在已经排序好的.链表中插入一个节点的函数,返回插入位置的前一个节点
如果节点已经在链表里边返回0
struct ListNode* ListInsert(struct ListNode* head,struct ListNode* newNode);
写一个删除节点的函数,返回删除后的前一个节点,如果节点不在链表里边返回0
struct ListNode* ListRemove(struct ListNode* head,struct ListNode* theNode);
C++笔试题:关于链表和指针
给你一个单链表和一个指向特定节点的指针,如何在一个特定时间删除这个节点?
删除节点我们需要两个东西,一个是要删除节点的前一个节点的`地址和它的后一个节点,这个面试题情况下我们只知道当前节点的地址
假设这个节点如下:
Data = the Data
Next = Pointer to the next node
再假设这个链表如下所示我们只知道当前的节点地址
PREIOUS NODE ->CURRENT NODE ->NEXT NODE
// 拷贝当前节点的下一个节点的内容到当前节点
nextnode = currentnode ->next
currentnode ->data = nextnode ->data
currentnode ->next = nextnode ->next
注意:如果当前节点是链表的最后一个元素的话,这个方法不适用
一.最基本题型(说明:此类题型比较简单)
1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?
2.你有一桶果冻,其中有黄色、绿色、红色三种
3.如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅,两只提捅形状上下都不均匀,问你如何才能准确称出4公升的水?(40秒-3分钟)
4.一个岔路口分别通向诚实国和说谎国。来了两个人,已知一个是诚实国的,另一个是说谎国的。诚实国永远说实话,说谎国永远说谎话。现在你要去说谎国,但不知道应该走哪条路,需要问这两个人。请问应该怎么问?(20秒-2分钟)
5.12个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球。13个呢?(注意此题并未说明那个球的重量是轻是重,所以需要仔细考虑)(5分钟-1小时)
6.在9个点上画10条直线,要求每条直线上至少有三个点?(3分钟-20分钟)
7.在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?
二.没有答案型(说明:这些题显然不是考你智力。而考的是你的反应能力。这种题大多数没有答案,但是要看你的反应喽!)
1.为什么下水道的盖子是圆的 ?
2.中国有多少辆汽车?
3.将汽车钥匙插入车门,向哪个方向旋转就可以打开车锁?7
4.如果你能够将全世界的电脑厂商集合在一个办公室里,然后告诉他们将被强迫做一件事,那件事将是什么?
5.多少个加油站才能满足中国的所有汽车?.
6.想象你站在镜子前,请问,为什么镜子中的影象可以颠倒左右,却不能颠倒上下?
7.为什么在任何旅馆里,你打开热水,热水都会瞬间倾泻而出?
8.你怎样将Excel的用法解释给你的奶奶听?
9.你怎样重新改进和设计一个ATM银行自动取款机?
10.如果你不得不重新学习一种新的计算机语言,你打算怎样着手来开始?
11.如果你的生涯规划中打算在5年内受到奖励,那获取该项奖励的动机是什么?观众是谁?
12.如果微软告诉你,我们打算投资五百万美元来启动你的投资计划,你将开始什么样商业计划?为什么?
面试指南:面试遇到智力测试题如何回答?
(1)排除法
把一些无关的问题先予以排除,可以确定的问题先确定,尽可能缩小未知的范围,以便于问题的分析和解决。这种思维方式在我们的工作和生活中都是很有用处的。
(2)递推法
由已知条件层层向下分析,要确保每一步都能准确无误。可能会有几个分支,应本着先易后难的原则,先从简单的一支入手。
(3)倒推法
从问题最后的结果开始,一步一步往前推,直到求出问题的答案。有些问题用此法解起来很简单,如用其他方法则很难。
(4)假设法
对给定的问题,先做一个或一些假设,然后根据已给的条件进行分析,如果出现与题目给的条件有矛盾的情况,说明假设错误,可再做另一个或另一些假设。如果结果只有两种可能,那么问题就已经解决了。在科学史上,“假设”曾起了极大的作用。
(5)计算法
有些问题必须经计算才能解决。要注意的是,智力测验中的问题往往含有隐含的条件,有时给出的数是无用的。
(6)分析法
这是最基本的方法。各种方法常常要用到分析法。可以说,分析能力的高低,是一个人的智力水平的体现。分析能力不仅是先天性的,在很大程度上取决于后天的训练,应养成对客观事物进行分析的良好习惯。
(7)作图法
根据问题中已知的条件,采用适当的方法画出图形,有助于问题的解决。有些问题,在没画图之前,会觉得无处下手,画了图后就一目了然了。
(8)综合法
事实上,许多问题都要运用几种不同的方法才能解决。所谓综合法,就是综合各种方法(包括前述各种方法以外的方法)去解决某些问题。
IT相关笔试题分享:
1)与逆波兰表达式ab+cd+*对应的中缀表达式是:
1. a+b+c*d
2. (a+b)*c+d
3. (a+b)*(c+d)
4. a+b*c+d
2)下列对MD5的叙述不正确的是:
1. 是一种散列算法
2. 指纹(摘要)的长度为128位
3. 是一种对称加密算法
4. 可用来校验数据的完整性
3)HTTP 1.1协议中规定表示正常响应的状态代码是
1. 0
2. 100
3. 200
4. 400
4)在SOCKET通信过程中,下列哪些函数是客户端需要调用,但是服务端不需要调用的函数?
1. socket()
2. bind()
3. connect()
4. send()
5)int listen(SOCKET s, int backlog);该函数中第二个参数的含义
1. 是否打开log信息
2. 是否打开后台log信息
3. 后台等待连接队列的最大限制值
4. 后台等待连接队列的最小限制值
5. 无意义
6)将网络地址映射为链路层相应地址的协议是
1. DNS
2. TCP
3. ARP
4. ICMP
★ 摩托笔试题
★ 笔试题交集
★ IQ 笔试题
★ 机械笔试题
★ 百度笔试题
★ 医学心理学笔试题
★ company笔试题
★ 数据结构笔试题
★ AVABT笔试题
★ 英特尔笔试题
笔试题循环2023-07-16
笔试题建筑业2023-07-23
一些网易笔试题2023-08-01
东风笔试题2023-09-01
Google笔试题2023-12-21
笔试题主观题2024-01-01
NVIDIA笔试题2024-02-04
百度笔试题2024-10-12
笔试题猜谜语2024-10-11
理工科笔试题2024-10-19
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/48941.html