当前位置: 首页 > news >正文

网站系统开发毕业设计济南seo排名搜索

网站系统开发毕业设计,济南seo排名搜索,网站开发及维护合同,海口网站如何制作《算法通关村第一关——链表青铜挑战笔记》 Java如何构造出链表 概念 如何构造出链表,首先必须了解什么是链表! 单向链表就像一个铁链一样,元素之间相互链接,包含多个节点,每个节点有一个指向后继元素的next指针。…

《算法通关村第一关——链表青铜挑战笔记》

Java如何构造出链表

概念

如何构造出链表,首先必须了解什么是链表!

单向链表就像一个铁链一样,元素之间相互链接,包含多个节点,每个节点有一个指向后继元素的next指针。表中最后一个元素的next指向null。

在这里插入图片描述

链表的核心是一个节点只能有一个后继节点,但不代表链表指向本节点的只有一个。

Java与C++不同没有了指针,只有引用,不用进行内存的回收,会使得代码的书写更加简单。

Java如何编写链表

先放代码

package AlgorithmFirst;public class LinkedNode {private int data;private LinkedNode next;public LinkedNode(int data){this.data = data;}/*** 获取数据* @return 数据值*/public int getData(){return this.data;}/*** 设置数据的值* @param data 数据*/public void setData(int data){this.data = data;}/*** 获取下一个节点* @return 当前节点的下一个几点*/public LinkedNode getNext(){return this.next;}/*** 设置下一个节点的值* @param next 下一个节点*/public void setNext(LinkedNode next){this.next = next;}/*** 获取链表长度* @param head 头节点* @return*/public static int getListLength(LinkedNode head){int length = 0 ;LinkedNode node = head;while(node != null){length ++ ;node = node.next;}return length;}/*** 缺省位置,直接在最后插入* @param head 头节点* @param insertNode 插入节点* @return 头节点*/public static LinkedNode insertNode(LinkedNode head,LinkedNode insertNode){int size = getListLength(head);// return insertNode(head,insertNode,size+1); 修改一下,以便insertNode后面的元素能够全部插入进来。int count = 1;LinkedNode temp = head;while(temp != null){if(count == size ){temp.next = insertNode;}temp = temp.next;count++;}return head;}/*** 指定位置插入* @param head 头节点* @param nodeInsert 插入节点* @param position 插入位置,从1开始* @return 返回头节点*/public static LinkedNode insertNode(LinkedNode head , LinkedNode nodeInsert, int position){if (head == null ){// 如果head == null 表示当前链表为空,可以直接返回当前节点,或者报异常,这里直接把它当作头节点。return nodeInsert;}// 已经存在的元素的个数int size = getListLength(head);if(position > size + 1 || position < 1 ){System.out.println("位置参数越界");return head;}// 表头插入if(position == 1 ){nodeInsert.next = head;// 这里可以直接 return nodeInserthead = nodeInsert;return head;}LinkedNode pNode = head;int count = 1;// 这里position 被上面的size限制住了,不用考虑pNode = nullwhile(count < position -1){pNode = pNode.next;count ++ ;}nodeInsert.next = pNode.next;pNode.next = nodeInsert;return head;}/*** 缺省参数的删除最后一个节点* @param head 链表头节点* @return 返回新链表头节点*/public static LinkedNode deleteNode(LinkedNode head){int size = getListLength(head);return deleteNode(head,size);}/*** 根据位置删除节点* @param head 链表头节点* @param position 位置从1开始,最大链表大小 超出不删除,返回原头节点。* @return 新链表头节点*/public static LinkedNode deleteNode(LinkedNode head , int position){if(head == null) {// 链表为空,无法删除return null ;}int size = getListLength(head);if(position > size || position < 1 ){System.out.println("输入参数有误" );return head;}if( position == 1){return head.next;}else{LinkedNode cur = head;int count = 1;while(count<position-1){cur = cur.next;count ++;}LinkedNode curNode = cur.next;cur.next = curNode.next;//上面两行可以简化成 : cur.next = cur.next.next}return head;}public static void  printLinkedList(LinkedNode head){int count = 0;while(head != null){System.out.println("第 "+ ++count +" 个:"+ head.data);head = head.next;}}public static void main(String[] args) {LinkedNode head = new LinkedNode(0);for(int i = 0 ; i<10 ; i++){head = LinkedNode.insertNode(head,new LinkedNode(i+1));}System.out.println("origin:");printLinkedList(head);head = deleteNode(head,3);System.out.println("delete the third ");printLinkedList(head);head = deleteNode(head);System.out.println("delete the last one");printLinkedList(head);head = insertNode(head,new LinkedNode(11));System.out.println("insert one from last");printLinkedList(head);head = insertNode(head,new LinkedNode(22222),1);System.out.println("insert to first");printLinkedList(head);}}

添加节点需要注意的点

链表无节点

如果开始链表无节点,那么就把插入的节点作为头节点返回

插入到头节点

注意一下插入进行的操作步骤,首先把插入节点的 next 等于 head , 然后再让head 等于 插入节点,然后返回。

插入到结尾

插入到结尾需要从head 遍历到结尾,然后用最后一个节点的next指向插入节点即可。

插入到中间

插入到中间,需要注意先通过遍历,找到要插入位置的前一个,然后插入节点的next等于前一个的next,而前一个的next指向插入节点。一定要注意顺序!

删除节点需要注意的

链表为空

直接返回

删除头节点

直接返回头节点的next 节点就好了。

删除中间节点、尾节点

首先要找到中间节点的前一个节点,让前一个节点的next指向自己的next的next就可以了。

近期在自学 Java 做项目,加入了一个编程学习圈子,里面有编程学习路线和原创的项目教程,感觉非常不错。还可以 1 对 1 和大厂嘉宾交流答疑,也希望能对大家有帮助,扫 ⬇️ 二维码即可加入。

在这里插入图片描述

也可以点击链接:我正在「编程导航」和朋友们讨论有趣的话题,你⼀起来吧?

http://www.yidumall.com/news/24405.html

相关文章:

  • p2p网站建设广州郑州seo优化外包热狗网
  • 建网站大公司seo搜索引擎优化名词解释
  • 苏州前几天网站建设深圳网络推广外包
  • 校园网站开发需求文字网络视频营销策略有哪些
  • 做网站需要资料it培训机构排名前十
  • 好看的网站设计公司广西壮族自治区人民医院
  • 号卡分销系统源码优化大师专业版
  • asp.net网站建设项目实战 董义革seo流量增长策略
  • 旅游网站经营模式网站的推广方式有哪些
  • 济南推广网站建设如何进行网站的宣传和推广
  • 大气ppt模板网站优化基本技巧
  • 丹棱网站建设百度竞价个人开户
  • 平台网站建设 厦门泉州百度关键词排名
  • 网站与建设的字体间距网站权重排名
  • j建设网站临沂网站建设
  • 马鞍山的网站建设公司潍坊seo计费
  • 个人微信号做网站行吗青岛快速排名优化
  • 十堰网站建设多少钱网站排名软件优化
  • 国际热点新闻最新消息南宁seo
  • 武汉网站整合营销联系方式咸阳网络推广
  • 网站专业代做哪家好无锡百度推广平台
  • 万户信息 做网站怎么样seo技术蜘蛛屯
  • WordPress对象储存整站优化
  • thinkphp 企业网站合肥网站seo费用
  • 免费网页游戏网宁波seo推广哪家好
  • 成都网站建设科技公网络营销师课程
  • wordpress 艺人主题关键词优化如何做
  • 模仿ios系统的html网站短视频平台推广
  • 晋江做鞋子批发的网站百度收录的网站
  • 法律电商如何做网站推广营销查询网站备案信息