摘要:
题目描述: 给定一个单向链表的头指针和一个结点指针,实现一个函数在o(1)时间删除该结点。 基本思路: 通常我们删除某个节点都是从头开始遍历到需要删除节点的前一个节点。然后使得该节点的next指向删除节点的next即可,这样看来删除一个节点的复杂度为O(n)。然而我们其实遍历的目的只是想获取想要删除 阅读全文
随笔档案-2016年03月
面试题13:删除单链表中的重复元素
2016-03-31 22:14 by Keiven_LY, 850 阅读, 收藏,
摘要:
算法思路: 设立三个工作指针p,q,r,p用于遍历链表,q用于遍历p后面的链表,r保存需要删掉的结点。P遍历整个链表,p每到一个结点,q就从这个结点往后遍历,并与p比较,相同的话就删掉此结点。 功能函数: 阅读全文
面试题12:单链表建环
2016-03-31 22:13 by Keiven_LY, 266 阅读, 收藏,
摘要:
昨天研究了关于单链表是否有环的问题,但是我们建的的单链表本身就是没环的。我们能否给一个无环链表建环呢? 当然可以,不过得想想算法。其实貌似也不难,只要找到最后一个结点 tail,让它指向环的入口就行。所以问题分解为:找到环入口点 cur,把最后的指针 tail 指向 cur即可。、 算法思想: 1、 阅读全文
面试题11:如何判断单链表是否存在环
2016-03-29 22:08 by Keiven_LY, 3722 阅读, 收藏,
摘要:
单链表有环的定义:链表的尾节点指向了链接中间的某个节点。 如下图所示,如果有环,则遍历到结点7时,又重新回到结点3,结点3就是环的入口结点。 思路:采用快慢指针的思想,设两个工作指针,一个快一个慢,如果链表有环,它们必然会在某个结点处相遇。 功能函数: 这里需要注意一个问题,为什么快慢指针相遇就说明 阅读全文
面试题10:查找单链表的中间结点
2016-03-29 22:04 by Keiven_LY, 1327 阅读, 收藏,
摘要:
思路1:首先求出单链表的总长度n,然后从链表的头节点开始遍历,当遍历到n/2个节点时,即为链表的中间结点。(面试题9:单链表中倒数第k个结点 的思路1) 思路2:设置两个工作指针*p1、*p2都指向单链表的头节点。其中*p1的移动速度是*p2的2倍。当p1指向尾节点的时候,p2正好指向链表的中间结点 阅读全文
面试题9:单链表中倒数第k个结点
2016-03-29 21:53 by Keiven_LY, 681 阅读, 收藏,
摘要:
题目描述: 输入一个单链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点为倒数第1个结点。如一个链表有6个结点,从头到尾依次为:1、2、3、4、5、6,则这个链表的倒数第2个结点是值为5的结点。 思路1:首先求出单链表的总长度n,然后从链表的头节点开始遍历,当 阅读全文
面试题8:从尾到头打印单链表
2016-03-28 22:30 by Keiven_LY, 1342 阅读, 收藏,
摘要:
题目描述: 实现一个函数,输入一个单链表的头结点,从尾到头反过来打印出每个结点的值 思路1:第一反应是将链表中的指针反转,改变链表的方向,然后再从头打印出来(该方法改变了原来链表的结构,这就要看面试或笔试时的要求,可否改变链表结构) 思路2:遍历链表时是从头到尾,而打印链表时却是从尾到头,典型的“先 阅读全文
面试题7:单链表的反转/逆序
2016-03-28 22:26 by Keiven_LY, 453 阅读, 收藏,
摘要:
题目描述: 实现一个函数,输入一个单链表的头结点,反转该链表并输出反转后链表的头结点。 基本思路: 比如链表:1->2->3->4->5->6 1.定义三个指针pcur,pnext,prev; 2. pcur指向1, pnext指向2, prev指向3; 3. 首先pcur->next=NULL(第 阅读全文
面试题6:查找某数在链表中的位置
2016-03-27 22:57 by Keiven_LY, 1517 阅读, 收藏,
摘要:
基本思路:声明一个结点p指向链表头结点,然后用p遍历链表,当p->data与要查询的数据相等时,返回其位置即可。 功能函数: 完整可执行程序: 运行结果: 阅读全文
面试题5:获取单链表指定位置的元素
2016-03-27 22:55 by Keiven_LY, 1775 阅读, 收藏,
摘要:
在线性表的顺序存储结构中,我们要计算任意一个元素的存储位置是很容易的。因为线性表的顺序存储就是个数组嘛,比如要获取第5个元素,可以直接a[5]就行了。但在单链表中,由于第i个元素到底在哪是没办法一开始就知道,必须得从头开始找。 基本思路: 功能函数: 阅读全文
面试题4:单链表的插入与删除
2016-03-27 22:52 by Keiven_LY, 799 阅读, 收藏,
摘要:
单链表第pos位置插入结点的算法思路: 单链表的插入功能函数 单链表删除pos位置的结点的算法思路: 单链表的删除功能函数 完整的可执行程序: 运行结果: 阅读全文
面试笔试试题精选
2016-03-25 21:51 by Keiven_LY, 879 阅读, 收藏,
摘要:
本系列文章均来源于网络,主要用于自己的学习,巩固,如有侵权请告知!!! 主要来源: 《剑指offer》 《编程之法-面试和算法心得》 《程序员面试宝典》 快课网: http://www.cricode.com/3282.html 微软博客大牛:http://blog.csdn.net/morewin 阅读全文
链表系列算法精选
2016-03-25 21:40 by Keiven_LY, 690 阅读, 收藏,
摘要:
本系列文章均来源于网络,主要用于自己的学习,巩固,如有侵权请告知!!! 主要来源: 《剑指offer》 《编程之法-面试和算法心得》 《程序员面试宝典》 快课网: http://www.cricode.com/3282.html 微软博客大牛:http://blog.csdn.net/morewin 阅读全文
面试题3:单链表重置为空表
2016-03-25 21:32 by Keiven_LY, 1581 阅读, 收藏,
摘要:
题目描述: 当我们不需要使用单链表时,就需要将其销毁,也就是在内存中将其释放掉。 单链表销毁的基本思路: 1、声明两个结点:p和q; 2、将链表的第一个结点赋给结点p; 3、循环: 将下一结点赋值给q; 释放p; 将q赋值给p。 单链表销毁的功能函数: 完整的可执行程序: 运行结果: 阅读全文
面试题2:单链表的创建、打印
2016-03-25 21:29 by Keiven_LY, 424 阅读, 收藏,
摘要:
题目描述: 编程实现一个单链表的建立、打印 单链表的创建功能函数 单链表的打印功能函数 完整的可执行程序: 运行结果: 阅读全文
面试题1:单链表的初始化、测长
2016-03-25 21:23 by Keiven_LY, 878 阅读, 收藏,
摘要:
单链表结点的结构体表示 单链表初始化的功能函数 单链表测长的功能函数 完整的可执行程序如下: 运行结果: 阅读全文
单链表的基本概念
2016-03-25 21:14 by Keiven_LY, 839 阅读, 收藏,
摘要:
单链表的结构 为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。 数据域:我们把存储数据元素信息的域称为数据域。 指针域:存储直接后继位置的域称为指针域。 指针/链:指针域中存储 阅读全文
Python学习资源搜集
2016-03-23 10:03 by Keiven_LY, 804 阅读, 收藏,
摘要:
对于Python小白来说,怎么能尽快学习Python呢?? 下面是网上搜罗的比较好的学习Python的基础教程 1、慕课网教程 Python入门、Python进阶、Python开发环境搭建、Python正则表达式、Python开发简单爬虫等 2、廖雪峰Python教程 基于Python 2.7版本对 阅读全文
面试题10:去除字符串中的重复字符
2016-03-22 21:33 by Keiven_LY, 20860 阅读, 收藏,
摘要:
题目描述: 设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意:可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。进一步地,为你的程序写测试用例。 解题思路: 这道题目其实是要你就地(in place)将字符串中重复字符移除。你可以向面试官问清楚,不能使用额外的一份数组 阅读全文
面试题9:判断字符串中的字符是否唯一
2016-03-22 20:58 by Keiven_LY, 1402 阅读, 收藏,
摘要:
题目描述: 实现一个算法来实现判断字符串中的字符是否唯一(即没有重复字符)。注意,不能适用额外的数据结构,只能适用基本数据结构。 解题思路: 首先,问询面试官,构成字符串的字符集有多大?是ASCII字符,还是只是26个字母?还是有更大的字符集,对于不同的情况,我们可能会有不同的解决方案。 该算法的时 阅读全文
面试题8:字符串的空格处理
2016-03-22 09:34 by Keiven_LY, 1213 阅读, 收藏,
摘要:
一、字符串中的空格替换 题目描述:请实现一个函数,把字符串中的每个空格替换成“%20”。例如:输入“We are happy.",则输出”We%20are%20happy." 题记: 在网络编程中,如果URL参数中含有特殊字符,如空格、'#'等,可能导致服务器端无法获得正确的参数值。就需要将这些特殊 阅读全文
字符串系列算法精选
2016-03-21 21:02 by Keiven_LY, 728 阅读, 收藏,
摘要:
本系列文章均来源于网络,主要用于自己的学习,巩固,如有侵权请告知!!! 主要来源: 《剑指offer》 《编程之法-面试和算法心得》 快课网: http://www.cricode.com/3282.html 微软博客大牛:http://blog.csdn.net/morewindows/artic 阅读全文
面试题7:字符串的全排列
2016-03-21 20:47 by Keiven_LY, 1063 阅读, 收藏,
摘要:
题目描述 输入一个字符串,打印出该字符串中字符的所有排列。例如,输入字符串”abc”,则输出由字符’a’,’b’,’c’所能排列出来的所有字符串”abc”,”acb”,”bac”,”bca”,”cab”和”cba”。 方法一:递归实现 基本思想: 从字符串中选出一个字符作为排列的第一个字符,然后对剩 阅读全文
面试题6:字符串的包含
2016-03-21 20:47 by Keiven_LY, 459 阅读, 收藏,
摘要:
题目描述 给定一长字符串a和一短字符串b,请问,如何最快判断出b中的所有字符是否都在a中?请编写函数bool StringCOntain(string &a, string &b)实现此功能。 举例: 如果字符串a是”ABCD”,字符串b是”BAD”,则返回true,因为字符串b中的所有字符都在字符 阅读全文
面试题5:回文字符串的判断
2016-03-21 20:45 by Keiven_LY, 828 阅读, 收藏,
摘要:
题目描述 给定一个字符串,如何判断这个字符串是否是回文字符串? 方法一:从两头向中间扫 基本思想:定义两个指针分别指向字符串的头和尾,然后让这两个指针同时向字符串的中间扫描,扫描过程中,如果头和尾指针所指的字符至始至终都一样,则说明该字符串为回文字符串,只要有一次不一样,就说明该字符串不是回文字符串 阅读全文
面试题4:单词翻转
2016-03-21 20:43 by Keiven_LY, 398 阅读, 收藏,
摘要:
题目描述 编写一个函数将字符串“I am from Beijing”,翻转成“Beijing from am I”,即将字符串中各个单词的位置倒置,但不改变各个单词本身。 方法一:先翻转单词,再整体翻转 方法二:先整体翻转,再翻转单词 测试程序: 注意: 程序中while(*ptr++!='\0') 阅读全文
面试题3:字符串的旋转
2016-03-21 20:38 by Keiven_LY, 346 阅读, 收藏,
摘要:
题目描述 给定一个字符串,要求将字符串前面的若干字符移到字符串的尾部。比如:将字符串“abcdef”的前3个字符’a’,’b’,’c’移到字符串的尾部,则原字符串将变为“defabc”。请写一个函数来实现此功能。 方法一:蛮力移位 基本思想:将需要移动的字符一个一个移动到字符串的尾部。 假设字符串s 阅读全文
面试题2:实现字符串逆序
2016-03-21 20:35 by Keiven_LY, 3087 阅读, 收藏,
摘要:
题目描述 给定一个字符串s,将s中的字符顺序颠倒过来,比如s="abcd",逆序后变成s="dcba"。 方法一:普通逆序 基本思想:直接分配一个与原字符串等长的字符数组,然后反向拷贝一下即可 方法二:原地逆序 基本思想:原地逆序意味着不允额外分配空间,就是将字符串两边的字符逐个交换。如给定字符串" 阅读全文
库函数strlen、strcpy、strcat、strtr的实现
2016-03-21 20:23 by Keiven_LY, 775 阅读, 收藏,
摘要:
1、题目描述:实现一个函数,将字符串str2复制给字符串str1 方法一:使用库函数strcpy 方法二:不允许使用库函数 2、题目描述:实现一个函数,求字符串的长度 方法一:使用库函数strlen 方法二:不允许使用库函数 3、题目描述:实现一个函数,将两个字符串相连接 方法一:使用库函数strc 阅读全文
《读书笔记》程序员的自我修养之编译和链接
2016-03-15 20:24 by Keiven_LY, 1069 阅读, 收藏,
摘要:
《读书笔记》程序员的自我修养之编译和链接 对于经典的Hello world,程序是如何运行的呢? #include <stdio.h> int main() { printf("Hello World\n"); return 0; } 对于GCC编译器,程序运行分为以下四 阅读全文
《读书笔记》程序员的自我修养之线程模型
2016-03-14 21:37 by Keiven_LY, 638 阅读, 收藏,
摘要:
线程可分为用户级线程(User Thread)和内核级线程(Kernel Thread),后者又称为内核支持的线程或轻量级进程。在多线程操作系统中,各个系统的实现方式并不相同,在有的系统中实现了用户级线程,有的系统中实现了内核级线程。 用户线程:不需要内核支持而在用户程序中实现的线程,其不依赖于操作 阅读全文
《读书笔记》程序员的自我修养之线程安全问题
2016-03-13 15:21 by Keiven_LY, 693 阅读, 收藏,
摘要:
场景:由于多线程程序处于一个多变的环境中,可访问的全局变量和堆数据随时都可能被其他线程改变。 一个经典实例来阐述多个线程同时访问一个共享数据所造成的后果。 线程1 线程2 i=1; ++i; --i; 首先要明白++i的实现步骤如下: (1) 读取i到某个寄存器X; (2) X++; ( 阅读全文
浙公网安备 33010602011771号