算法与数据结构
yangruxi
这个作者很懒,什么都没留下…
展开
-
链表--如何实现链表的增删操作
如何实现链表的增删操作1.链表 链表是一种最基本的数据结构,其存储特点如下:可以用任意一组存储单元来存储数据元素(存储单元可以不连续),除了存储每个数据元素ai的值外,还存储指示其后继元素的信息。这两部分组成的数据元素ai的存储映像称为结点。N个结点链接在一起称为链表,当结点只包含其后继信息的链表就称为单链表。2.可定义如下链表类来存储结点信息public class Nod...原创 2018-05-13 20:51:18 · 4187 阅读 · 0 评论 -
移位--判断一个数二进制表示中1的个数
问题: 给定一个数字,求其二进制表示中1的个数。思路: 假设给定数为n, 判断n&1的结果,如果为1,证明这个数的二进制表示末位为1,则count+1,然后n右移一位递归调用这个方法,直到右移后的这个数为0。代码实现:public class Test { public static int count = 0; public static void ...原创 2018-05-16 20:34:42 · 778 阅读 · 0 评论 -
数组--二维数组的查找
如何判断一个数是否在二维数组中题目: 给定一个二维数组和一个数,这个数组的每一行按照从左到右递增的顺序排列,每一列按照从上至下递增的顺序排列,判断这个数是否在这个二维数组中。思路: 把这个二维数组看成一个矩阵,给定一个数9,判断9是否在这个二维数组中。 例如,给定一个二维数组如下: 1 2 3 4 5 3 5 6 7 8 ...原创 2018-05-16 20:13:36 · 400 阅读 · 0 评论 -
链表--如何检测一个链表是否有环及如何找到环的入口点
如何检测一个链表是否有环有环的链表: 有环的链表是指链表有环路,例如A->B->C->D->E->F->B,遍历的时候B->C->D->E->F->B会形成环路一直循环。思路: 设置一个快指针fast,一个慢指针slow,二者初始都指向链表头,fas原创 2018-05-16 10:07:06 · 11434 阅读 · 9 评论 -
链表--如何寻找单链表的中间结点
如何寻找单链表的中间结点方法一思路:从头到尾遍历链表,得到链表的长度length,求出length/2,就能找到单链表的中间结点。方法二思路:如果是双向链表,我们可以设置两个指针(Java中没有指针,但是引用和指针概念很像),一个从头开始遍历,一个从链表尾开始遍历,两个指针相遇的时候就是链表的中间结点。对于单链表,我们以此为基础,设置两个指针,一个指针一次走一步,另一个指针一次...原创 2018-05-16 09:42:42 · 2972 阅读 · 2 评论 -
链表--如何反向输出单链表
方法一思路: 先把链表反转再遍历输出。方法二思路: 遍历链表,每遍历到一个结点,就把这个结点的值存储到一个栈中,遍历完链表后,再从栈顶弹出每一个结点的值。这种方法会占用额外的空间。方法三思路: 递归,要想输出当前结点的值,先递归输出其后继结点的值。代码实现:public static void printReverseChain(Node curNode)...原创 2018-05-15 23:11:13 · 6341 阅读 · 1 评论 -
链表--如何实现链表的反转
如何实现链表的反转原本的链表: 反转后: 思路: 我们在反转链表的时候,原本每一个结点的next指向其后继结点,现在调整指针方向,让其next指向前面一个结点。但是这样有一个问题,以u,v,w为例,当v指向u以后,就没有指针指向w了,就无法遍历到w了,所以我们在调整v的指针之前,先把w存储起来。然后找到反转链表的头结点,即原本链表中next指针为空的结点。代码实现:p...原创 2018-05-15 22:46:11 · 498 阅读 · 0 评论 -
链表--如何查找单链表中倒数第k个元素
如何查找单链表中第k个元素思路:因为是单链表,只能从头至尾遍历。可以设置两个引用,其中一个引用比另外一个先前移k-1步,然后两个引用同时开始移动,当先前移的那个引用到达链表尾的时候,即指向为NULL时,另一个引用指向的位置就是所要查找的元素。代码实现:public static Node findElem(Node head,int k) { if(k < 1) ...原创 2018-05-15 21:41:10 · 2013 阅读 · 0 评论 -
链表--如何从链表中删除重复数据
方法一思路:遍历链表,将链表中的数据存储到HashTable中,若当前遍历的数据在HashTable中存在,说明这个数据重复,可以将这个数据删除掉。代码实现:public void deleteRepeat(Node head){ Hashtable<Integer,Integer> hashTable = new Hashtable<Intege...原创 2018-05-14 22:27:00 · 853 阅读 · 0 评论 -
字符串--替换空格
替换空格实现一个方法,把字符串中的空格替换为”%20”。例如: 输入:”I like this”,输出:”I%20like%20this”。 在网络编程中,如果URL参数中含有特殊字符,如空格、’#’等,可能导致服务器端无法获取正确的参数值。我们需要将这些参数转换成服务器可以识别的字符。转换的规则是在’%’后面跟上ASCII码的两位十六进制的表示。比如空格的ASCII码是32,它的十...原创 2018-05-24 21:37:24 · 460 阅读 · 0 评论