面试题 1.链表和数组的区别在哪里? 2.编写实现链表排序的一种算法。说明为什么你会选择用这样的方法? 3.编写实现数组排序的一种算法。说明为什么你会选择用这样的方法? 4.请编写能直接实现strstr()函数功能的代码。 5.编写反转字符串的程序,要求优化速度、优化空间。 6.在链表里如何发现循环链接? 7....
1、计算Fibonacci数列 Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。 C语言实现的代码如下: 结果输出: Enter number of terms: 10 Fibonacci Series: 0+1+…
C语言面试题分类->排序算法 1.选择排序。 每次将最小的数,与剩余数做比较。找到更小的,做交换。 时间复杂度:O(n²) 空间复杂度:O(1) 优缺点:耗时但内存空间使用小。 voidselectSort(int*p,intlen) {inti, j,tmp;for(i =0; i < len; i++) {for(j = i+1; j < len; j++) {if(p[i]...
说明:循环算法就是移动过程,比较好理解和想到。递归算法的设计虽有一点难度,但是理解了循环算法,再设计递归算法就简单多了。 面试题 21:简述队列和栈的异同 队列和栈都是线性存储结构,但是两者的插入和删除数据的操作不同,队列是“先进先出”,栈是 “后进先出”。 注意:区别栈区和堆区。堆区的存取是“顺序随意...
面试题 20:怎样把一个单链表反序(1) 反转一个链表。循环算法。 代码语言:javascript 复制 Listreverse(List n){if(!n)//判断链表是否为空,为空即退出。{returnn;}list cur=n.next;//保存头结点的下个结点list pre=n;list tmp;//保存头结点pre.next=null;//头结点的指针指空,转换后变尾结点while(NUL...
C 数据结构与算法笔试面试题 c语言数据结构面试 1.输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 1. 2. 3. 4. 5. A: 递归方法逆序输出,栈方法逆序输出。
基础排序算法: 冒泡排序、选择排序、插入排序、归并排序、希尔排序、快速排序、堆排序 建议看不懂原理说明或图示时请看代码。 1. 冒泡排序 1.1 基本思想 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。
这道题我几年前在华为的面试题中也遇到过。 代码很简短,main函数定义了一个指针变量p,然后将其地址传递给fun函数,fun函数使用malloc函数在堆上分配了100个字节的空间,并把这块内存的地址赋值给了p。回到main函数中,紧接着调用free函数释放刚刚分配的内存。
判断 2 个单链表是否相交,是一个老生常谈但又极具思考性的面试题,本节就在读者已经掌握单链表及其基本操作的基础上,就此问题给大家做深入地讲解。首先,读者要搞清楚“相交”的含义。所谓相交,是指有公共的部分,而 2 个单链表相交,则意味着它们有公共的节点,公共节点的数量可以是 1 个或者多个。通过...
85、华为面试题:怎么判断链表中是否有环? 【参考答案】答:用两个指针来遍历这个单向链表,第 一个指针 p1,每次走一步;第二个指针 p2,每次走两 步;当 p2 指针追上 p1 的时候,就表明链表当中有环 路了。 int testLinkRing(Link *head) { Link *t1=head,*t2=head; while( t1->next && t2->next) ...