DS
ForYanC
这个作者很懒,什么都没留下…
展开
-
链表的头插,尾插,按指定位置插入(java实现)
链表的java实现链表是一种物理结构上的非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。对于单项不带头的非循环链表来说,下面是它的结构图。下面是对这种链表的 头插、尾插和按照指定位置插入public class MyLinkedList{ //内部类 class Node{ private int data; p...原创 2019-05-11 15:51:51 · 7067 阅读 · 1 评论 -
单链表的删除指定元素
单链表删除指定元素key1.删除第一次出现的元素key分析:1)如果链表为空,就不存在删除元素,所以刚开始应该对链表的长度进行判断2)如果要删除的元素为头结点,所以首先要对头结点进行判断3)如果要删除一个元素,那么要站到它的前驱,再进行删除,否则无法进行删除public int remove(int key) { int oldData=0; Node ...原创 2019-08-05 11:00:06 · 5995 阅读 · 1 评论 -
带头循环单链表的头插,尾插,指定位置插入元素
带头单链表的头插,尾插,指定位置插入元素1.头插分析:对于还没有进行插入数据的时候,此时的头结点指向头结点自己,这个在初始化里面完成,对于一般情况下的插入,先绑后面再绑前面。具体如下图所示:程序如下: public void addFirst(int data) { Node node=new Node(data); node.next=this.hea...原创 2019-08-06 10:54:17 · 1927 阅读 · 0 评论 -
带头循环单链表删除指定元素
带头循环单链表删除指定元素1.remove()分析:1)首先要找到删除元素的前驱2)如果前驱不存在,即就是该单链表中不存在该元素3)如果前驱存在,则进行删除程序如下:private Node searchPre(int key){ Node pre=this.head; while(pre.next!=this.head){ ...原创 2019-08-07 10:18:20 · 940 阅读 · 0 评论 -
反转一个单链表
反转一个单链表分析:如下图所示,下图表示反转之前的单链表反转之后就变成了下图所示从图中可以看出来,我们需要将第一个结点的next域变为null。从第二个结点开始就让其指向指向前面的结点。程序如下:public Node reverseList() { Node prev = null;//表示cur的前驱,里面放的是前驱信息 Node cur = ...原创 2019-08-10 11:14:25 · 228 阅读 · 0 评论 -
不带头双向链表的头插,尾插,指定位置插入
不带头双向链表的头插、尾插、指定位置插入对于双向链表的插入操作,为了方便起见,可以在链表初始化的时候定义一个头head(指向第一个元素),一个尾巴last(指向最后一个元素)1、头插分析:对于双向链表的头插,一般分为第一次插入和不是第一次插入。具体见下图:程序如下:public void addFirst(int data) { Node node = new No...原创 2019-08-15 00:48:28 · 565 阅读 · 0 评论 -
输入一个单链表,输出该链表的倒数第K个结点
输出单链表的倒数第K个结点分析:首先如果链表为空,则不存在第K个结点;如果K小于0,则也不存在倒数第K个结点。对于K大于数组长度的也不存在第K个结点。接下来是定义两个结点,一个fast,一个slow。既然是求倒数第K个 结点,那么先让快的走K-1步,然后快的和慢的一起走。等到快的走到尾结点的时候,这个时候慢的就走到了倒数第K个结点。程序如下:public Node FindKthToT...原创 2019-08-12 12:09:47 · 1546 阅读 · 2 评论 -
删除链表中所有重复结点,重复结点不保留
删除链表中所有重复结点,重复结点不保留分析:定义一个假的结点头,将所有的不重复的结点串在其后面,最后返回该假的结点头的next就可以了。在这个题里面,难点是如何将所有的重复结点都跳过去?因为重复的结点不止两个,可能有是三个,四个等等,因为不知道要跳过多少个重复的结点,所以在这里需要用到一个while循环。程序:public Node deleteDuplication() { ...原创 2019-08-25 21:06:56 · 353 阅读 · 0 评论 -
不带头双向链表删除指定元素
不带头双向链表删除指定元素1、remove(key)对于remove(key),只需要删除第一次找到的元素,然后返回即可。要删除指定元素,先要判断链表是否为空,如果链表为空,就不存在删除指定元素;如果不为空,接下来再判断要删除的元素是否是其头部。如果是其头部,将其头部后移,并将头的prev置为null;结构图如下:如果不是头部,再向后找指定元素,如果要删除的结点是中间结点,结构图如下:...原创 2019-08-22 00:57:37 · 353 阅读 · 0 评论