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

网站建设常用工具二手书交易网站开发与设计

网站建设常用工具,二手书交易网站开发与设计,学生登录入口,查看网站被恶意镜像说明#xff1a;由于该数据结构是由java并且是原生实现#xff0c;所以与C有一些出入#xff0c;不过原理是相同的 1.链表的定义 为了表示线性表元素a与a1的逻辑关系#xff0c;存储数据时#xff0c;除了存储元素本身的信息之外#xff0c;还存储了直接后继元素的位置信…说明由于该数据结构是由java并且是原生实现所以与C有一些出入不过原理是相同的 1.链表的定义     为了表示线性表元素a与a1的逻辑关系存储数据时除了存储元素本身的信息之外还存储了直接后继元素的位置信息。这两部分组成的数据元素被称为“结点”一个结点分为两部分存放数据元素信息的部分被称为数据域     存放直接后继元素位置的部分被称为指针域。     单链表结点指针域只存放直接后继元素位置的链表也叫单向链表。     双链表结点指针域同时存放前驱元素和后继元素位置的链表也叫双向链表。     循环链表一般的链表尾结点最后一个结点的指针域一般null但是有的链表将最后一个节点的指针域指向头结点构成一个环称作循环链表。     头结点 一个链表的头节点就是指针域指向该链表的第一个结点的结点一般用来唯一确定一个链表也有的链表是不带头结点的那时我们通过链表的第一个结点来确定链表注意头结点的数据与是null 2.实现原理     链表的每一个结点包括两部分数据域和指针域数据域用来存储数据指针域用来存储后继结点的位置。 1 class LinkT{2 /**3 *用来存储数据4 */5 T data;6 /**7 *用来存储下一结点位置8 */9 Link next; 10 } 3.链表的基本操作     1.初始化 init() 创建一个链表     2.清空 clear() 清空一个链表     3.销毁 destroy() 销毁链表     4.在头部插入一个结点 insertFront()     5.在尾部插入一个结点 insertBackend()     6.在任意位置插入一个结点 insertIndex()     7.删除任意位置元素 delete()     8.查找元素 find()     9.获取指定位置节点的值 get() 4.代码实现   4.1链表代码实现 1 package com.xiaobai.linelist;2 3 /**4 * Author: xiaobai5 * Date: 2019/5/1 9:006 * email:7 * address:8 * desc 模拟单链表操作9 * Version 1.010 */11 SuppressWarnings(ALL)12 public final class LinkT {13 /**14 * data 是要存储的数据15 */16 private T data;17 /**18 * next是下一结点的引用位置19 */20 public LinkT next;21 22 /**23 * 初始化操作 构造方法返回一个空结点24 */25 public Link(){26 this.next null;27 this.data null;28 }29 30 /**31 * 构造一个新的链表结点32 * 新结点是没有后继结点的 所以直接null33 * param data 数据34 */35 public Link(T data){36 this.data data;37 this.next null;38 }39 40 /**41 * 清空链表操作42 * param link 要被清空的链表头节点43 */44 public void clear(){45 //让每一个结点的引用都为 null GC 自动回收46 LinkT link this;47 while(link.next!null){48 Link curr link.next;49 link.next link.next.next;50 curr null;51 }52 link null;53 }54 55 /**56 * 销毁链表 这里的销毁和清空我认为没有什么区别所以直接调用57 * 如果大家认为有区别的话可以与我交流58 * param link 被销毁的链表59 */60 public void destroy(){61 this.clear();62 }63 64 /**65 * 在链表的头部插入一个结点默认是带头结点的链表66 * param head 链表的头节点67 * param data 被插入的数据68 * return 插入结果69 */70 public boolean insertFront(T data){71 //先构建一个新的结点72 LinkT node new LinkT(data);73 try {74 //将结点插入到头部 即 新节点后继指向原来的第一个结点 头节点后继指向新节点75 node.next this.next;76 this.next node;77 return true;78 }catch (Exception e){79 e.printStackTrace();80 return false;81 }82 }83 84 /**85 * 在链表的尾部插入一个结点86 * param head 链表头节点87 * param data 要插入的数据88 * return 插入结果89 */90 public boolean insertBackend(T data){91 //先构建一个新的结点92 try {93 LinkT node new LinkT(data);94 //然后找到链表的尾95 LinkT point this.next;96 while(point.next!null){97 point point.next;98 }99 //插入 100 point.next node; 101 return true; 102 } catch (Exception e) { 103 e.printStackTrace(); 104 return false; 105 } 106 } 107 108 /** 109 * 在任意位置插入一个结点 110 * param head 要插入的链表 111 * param i 插入位置 从0开始 112 * param data 插入的数据 113 * return 插入结果 114 */ 115 public boolean insertIndex(int i,T data){ 116 Link curr this.next; 117 //空链表 拒绝插入 118 if(null curr i 0){ 119 return false; 120 } 121 int count 0; 122 //找到被插入的位置要找被插入位置前一个 123 while(count ! i-1 null ! curr){ 124 curr curr.next; 125 count ; 126 } 127 //如果循环提前结束 说明i值过大 128 if(count ! i-1){ 129 return false; 130 } 131 //开始插入节点 132 LinkT node new LinkT(data); 133 node.next curr.next; 134 curr.next node; 135 return true; 136 } 137 138 /** 139 * 删除任意位置元素 140 * param i 被删除的位置 从0 开始 141 * return 被删除的元素 删除失败返回null 142 */ 143 public T delete(int i){ 144 T del null; 145 int count 0; 146 LinkT curr this.next; 147 //找到被删除结点的前一个结点 148 while (curr ! null count i-1){ 149 curr curr.next; 150 count; 151 } 152 //如果不满足条件 删除失败 153 if(count!i-1){ 154 return del; 155 } 156 //如果找到 执行删除操作 GC 自动释放 157 del curr.next.data; 158 curr.next curr.next.next; 159 return del; 160 } 161 162 /** 163 * 查找元素是否存在 可能需要重写存储对象的equals方法 164 * param data 被查找元素 165 * return 查找结果 166 */ 167 public boolean find(T data){ 168 Link curr this.next; 169 while(curr ! null){ 170 if(curr.data.equals(data)||curr.data data){ 171 return true; 172 } 173 curr curr.next; 174 } 175 return false; 176 } 177 178 /** 179 * 获取指定位置的元素 180 * param i 位置 181 * return 获取到的值 没有返回null 182 */ 183 public T get(int i) { 184 T data null; 185 LinkT curr this.next; 186 int count 0; 187 while(count!i curr!null){ 188 curr curr.next; 189 count ; 190 } 191 if(count i curr! null){ 192 data curr.data; 193 } 194 return data; 195 } 196 197 Override 198 public String toString() { 199 StringBuilder sb new StringBuilder().append(HashCode this.hashCode()).append( {head - ); 200 LinkT curr this.next; 201 while (curr!null){ 202 sb.append(curr.data - ); 203 curr curr.next; 204 } 205 sb.append( null}); 206 return sb.toString(); 207 } 208 }     4.2  测试代码及结果 1 /**2 * Author: xiaobai3 * Date: 2019/5/1 9:424 * email: 5 * address:6 * Version 1.07 */8 public class TestLink {9 public static void main(String[] args) { 10 System.out.println(初始化链表); 11 LinkInteger link new Link(); 12 System.out.println(当前链表: link); 13 14 System.out.println(在前端插入一个元素 5); 15 link.insertFront(5); 16 System.out.println(当前链表: link); 17 18 for(int i1;i10;i){ 19 link.insertBackend(i); 20 } 21 System.out.println(依次从后端继续插入10个数后 link); 22 23 link.insertIndex(3,100); 24 //索引从0开始 25 System.out.println(在第三个位置上插入100以后的链表 link); 26 27 System.out.println(在第100个位置上插入0 link.insertIndex(100,0)); 28 29 System.out.println(删除第三个位置上的元素link.delete(3)); 30 System.out.println(link); 31 32 System.out.println(查找元素10的结果link.find(10)); 33 System.out.println(查找元素100的结果link.find(100)); 34 35 System.out.println(获取第3个结点的值 link.get(3)); 36 System.out.println(获取第999个结点的值 link.get(999)); 37 38 link.clear(); 39 System.out.println(执行清空操作后的链表 link); 40 41 link.destroy(); 42 43 } 44 }       运行结果图  转载于:https://www.cnblogs.com/xiaobai1202/p/10799114.html
http://www.pierceye.com/news/891097/

相关文章:

  • 邢台网站改版开发长沙教育网站开发
  • 网站开发人员必备技能网站背景图片自动切换
  • 企业网站建立策划书有网站吗给一个
  • 外贸建站有哪些公司建设主管部门网站查询
  • 泰安市网站建设广州优化公司哪家好
  • 手机网游传奇西安关键词优化平台
  • 网站建设公司权威机构3d虚拟人物制作软件
  • 北京网站建设seo公司哪家好阿里巴巴企业邮箱登录入口
  • 广州shopify代建站新产品代理
  • html5网站特点在线搜索引擎
  • 网站搭建服务平台网站备案 关闭网站
  • 高端建站收费标准宣传设计网站
  • 视频网站数据库设计手机企业网站设计
  • 广安发展建设集团有限公司门户网站竞价推广代运营服务
  • 济南mip网站建设公司山西住房建设厅网站
  • 兰州需要做网站的公司有哪些做词云的网站
  • 红酒公司网站建设模板6841如何通过网站获取qq
  • 写一张营销型网站页面多长时间微动漫怎么制作
  • 网站架构设计师月薪多少柳州团购网站建设
  • 深圳宝安沙井网站建设网络营销推广主要做什么?有哪些方法和技巧?
  • 图书馆门户网站建设的意义开票 网站建设
  • 如何用家用电脑做网站wordpress的伪静态
  • 东营市城市和建设管理局网站网络基础知识点
  • 怎么制作网站链接转发视频网页游戏开服表怎么取消
  • 360网站seo怎么做北京商场关闭通知
  • 连云港建设公司网站工程承包信息
  • 互动网站制作建设医院网站服务
  • 用asp做网站span增城高端网站建设
  • 数据交易网站开发网站流量超
  • 做短视频网站用哪家cms湖州高端网站设计