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

襄阳网站建设多少钱开发软件app需要多少钱

襄阳网站建设多少钱,开发软件app需要多少钱,网站建设项目策划书模板范文,公司网站url一、什么是链表 链表由一系列节点组成,每个节点都包含一个 data 域(存放数据)和一个 next 域(指向下一节点)。链表中的节点可以按照任意顺序存放在内存中,它们之间并不连续。每个节点都记录了下一个节点的地…

一、什么是链表

        链表由一系列节点组成,每个节点都包含一个 data 域(存放数据和一个 next 域(指向下一节点。链表中的节点可以按照任意顺序存放在内存中,它们之间并不连续。每个节点都记录了下一个节点的地址,这样可以通过遍历节点的方式遍历整个链表。链表有种类型,如单向链表双向链表循环链表等。

        这里主要了解单向列表的实现与使用。


二、在 Java 中实现链表

        首先,我们需要定义一个节点类假设其用于保存个人信息(id、name),其中 next 用于指向下一个节点Node)。其还有构造方法同时重写了 toString 方法(不输出 next 的信息)。

class Node {public int id;public String name;public Node next;//构造器public Node(int id, String name) {this.id = id;this.name = name;}@Overridepublic String toString() {return "Node{" +"id=" + id +", name='" + name +'}';}
}

        接着,我们初始化一个头结点,其不存储任何数据,用于表示单链表的头部

private Node head = new Node(0, "");

        想要向链表中添加节点,可以在 SingleLinkedList 类中定义一个 add 方法,其内通过辅助节点(next)遍历链表到尾部,再将要添加的节点添加到尾部。

public void add(Node node) {// 因为 head 节点不能动,所以需要一个辅助节点 tempNode temp = head;while (true){if (temp.next == null){break;}temp = temp.next;}temp.next = node;
}

        想要查看链表的所有数据,可以定义一个 list 方法,创建一个辅助节点遍历链表并在 next 时输出错误信息后停止遍历,不为空输出节点的内容。

public void list(){if (head.next == null) {System.out.println("链表为空");return;}Node temp = head.next;while(true){if (temp == null){break;}System.out.println(temp);temp = temp.next;}
}

最终效果如下所示


        而要是想要实现添加时的 id 顺序随机 ,但会在链表中排序后添加到对应位置的功能,我们可以创建一个排序添加的方法 addByOrder,通过比较加入的节点与链表中原有节点中的 id 的大小来添加到链表相应位置。

public void addByOrder(Node node){Node temp = head;boolean flag = false;while(true){if (temp.next == null){break;}if (temp.next.id > node.id){break;} else if (temp.next.id == node.id){flag = true;break;}temp = temp.next;}if (flag){System.out.println("准备插入的人的编号已经存在:" + node.id);} else {node.next = temp.next;temp.next = node;}
}

        方法中先声明了一个辅助节点 temp 和一个用于记录 id 是否已存在flag。其先遍历链表,如果 temp 的下一个节点为 null 则表示到达链表的尾部,直接退出循环;之后判断是否存在 id 新加入的节点id 之后的,如果有则退出循环,此时 temp 代表需要插入位置之前的节点处,而 temp.next 则代表需要插入位置之后的节点处。(如下图所示

        而循环外可以将 ① node 的 next 设为 temp 的next ② temp 的 next 设为 node。(如下图所示

        最后如果遍历到 id 相同的节点,则将 flag 设为 true 退出循环,并在循环外输出错误信息

最终效果如下所示


        其余的基础操作也是类似的想法去实现,如删除操作,也是传入 id 遍历链表找到相同的 id 后将其从链表中断开(temp.next = temp.next.next)。更新删除操作对应代码如下:

public void update(Node newNode){if (head.next == null){System.out.println("链表为空");return;}Node temp = head.next;boolean flag = false;while(true){if (temp == null){break;}if (temp.id == newNode.id){flag = true;break;}temp = temp.next;}if (flag){temp.name = newNode.name;} else {System.out.println("没有找到编号 " + newNode.id + " 的节点");}
}public void del(int id){Node temp = head;boolean flag = false;while (true){if (temp.next == null){break;}if (temp.next.id == id){flag = true;break;}temp = temp.next;}if (flag){temp.next = temp.next.next;} else {System.out.println("没有找到编号 " + id + " 的节点");}
}

(水)

【完】

http://www.15wanjia.com/news/19624.html

相关文章:

  • 网络营销的特点主要有哪些seo咨询河北
  • 怀柔石家庄网站建设抖音推广渠道有哪些
  • 建立制度优化方案模板
  • 网站开发流程三部分开鲁网站seo站长工具
  • 庆阳市人大常委会网站建设如何规划企业网络推广方案
  • 做网站创业流程图在线磁力搜索神器
  • 北京政府网站开发友情链接网站
  • 网站文字设计百度指数网址是多少
  • 汕头网站设计制作公司怎么创建网页链接
  • 网站开发 协作平台论坛推广方案
  • 幼儿园网站建设的意义seo优化关键词排名
  • 网站建设的相关书籍sem培训班培训多少钱
  • 做网站怎么做优化公司流程制度
  • 网站甲假发头套真头发做的假发湖北荆门今日头条
  • 企业网站 seo怎么做seo技术网网
  • 做交友网站如何吸引用户注册自己如何开网站
  • 做网站是什么课搜索引擎免费下载
  • 嘉兴做外贸网站比较好的公司今天最近的新闻
  • 新开传奇网站服百度手机助手下载2022新版
  • 深圳网站优化项目成都高端企业网站建设
  • 做车身拉花的网站淘宝seo排名优化软件
  • 阿里云企业建站教程搜索引擎营销优化
  • 鄂州英文网站建设二十条优化
  • 外贸独立站怎么搭建百度排行榜风云榜小说
  • 二级建造师考试报名官网盐城seo优化
  • 做企业网站备案都需要什么资料百度风云搜索榜
  • 贵州网站建设设计公司哪家好免费个人网页制作
  • 岚山建设网站杭州seo 云优化科技
  • 怎么用网站做word文件沈阳专业seo排名优化公司
  • 哈尔滨cms建站系统网址查询域名解析