博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表1
阅读量:4884 次
发布时间:2019-06-11

本文共 1696 字,大约阅读时间需要 5 分钟。

概念

链表是链式存储的线性表,链表的数据以节点来表示,节点由两部分组成,元素和指针,元素是存储数据的存储单元,指针是指向节点的地址数据。

链式存储元素有头插法和尾插法,头插法:以添加的第一个元素作为链表的链尾,链表一直向左延伸,链头一直变化;尾插法:以添加的第一个元素作为链表的链头,链表向右延伸,链尾一直变化。

java示例代码

1 public class SingleLinkedList
implements Serializable { 2 /** 3 * 4 */ 5 private static final long serialVersionUID = 6450140603802402390L; 6 7 // 头节点 8 private Node
head; 9 // 尾节点10 private Node
last;11 // 链表长度12 private int size;13 14 public SingleLinkedList() {15 this.head = null;16 this.size = 0;17 }18 19 // 节点信息20 private static class Node
{21 // 元素22 private E data;23 // 前驱24 private Node
pre;25 // 后驱26 private Node
next;27 28 public Node(Node
pre, E obj, Node
next) {29 this.pre = pre;30 this.data = obj;31 this.next = next;32 }33 }34 35 /**36 * 头插法:以第一个元素作为链表的尾部,链表不断向左延伸,链头一直变化37 * 38 * @return39 */40 public boolean addByHead(E object) {41 Node
h = head;42 // 每次新节点作为链表的头结点,头结点无前驱43 Node
newNode = new Node<>(null, object, h);44 // 头部一直在变化45 head = newNode;46 if (h == null) {47 last = newNode;48 } else {49 h.pre = newNode;50 }51 size++;52 return true;53 }54 55 /**56 * 尾插法:以第一个元素作为链头,链尾不断变化,链表不断向右延伸57 * 58 * @param object59 * @return60 */61 public boolean addByTail(E object) {62 Node
t = last;63 // 每次新节点作为链表的尾结点,尾结点无后继64 Node
newNode = new Node<>(t, object, null);65 last = newNode;66 // 尾部一直在变化67 if (t == null) {68 head = newNode;69 } else {70 t.next = newNode;71 }72 ;73 size++;74 return true;75 }76 }

 

转载于:https://www.cnblogs.com/thomas-seven/p/8762994.html

你可能感兴趣的文章
gdb基本调试命令
查看>>
互联网开放平台API安全设计
查看>>
OPMN
查看>>
LOG收集系统(一):原日志至收集
查看>>
【文摘】经营十二条
查看>>
Logstash连接Elasticsearch异常
查看>>
洛谷P4287 [SHOI2011]双倍回文(回文自动机)
查看>>
用户交互程序,格式化输出
查看>>
GNOME的发展与对比
查看>>
SPOJ PT07X Vertex Cover
查看>>
$ python-json模块的基本用法
查看>>
5.6.3.4 trim()方法
查看>>
Cookie、Session和自定义分页
查看>>
SQL演练
查看>>
React Antd中样式的修改
查看>>
Spring 应用外部属性文件 配置 context 错误
查看>>
导入lxml找不到etree,报ImportError:DLL load failed:找不到指定的程序
查看>>
面向对象一
查看>>
大象的崛起!Hadoop七年发展风雨录
查看>>
图片二值化
查看>>