链表是一种物理存储单元上非连续、非顺序的存储结构。
链表有一系列的结点组成,结点可以在运行是动态生成。
每一个结点包括两个部分:存储数据的数据域和存储下一个结点的指针域。
下面是结点的一个类,有设置和得到结点中数据的方法,设置和得到下一个结点的方法。
设置结点的数据setObject(Object obj)
得到结点的数据getObject()
设置下一个结点setNext(linkNode next)
得到下一个结点getNext()
public class linkNode {
Object obj;//结点中中的数据
linkNode next;//对下一个结点的引用
public linkNode(Object obj){
this.obj=obj;
}
public Object getObject(){
return obj;
}
public void setObj(Object obj){
this.obj=obj;
}
public void setNext(linkNode next){
this.next=next;
}
public linkNode getNext(){
return next;
}
}
结点的类设置好了后,还要添加结点,创建链表。
分链表为空和不为空两种情况:如果不为空,就将刚刚创建的结点作为根结点,并且该结点是尾结点,否则,将刚刚创建的结点作为尾结点。
linkNode root=null;//根结点
linkNode end=root;//尾结点
public void add(Object obj){
if(root==null){
root=new linkNode(obj);
end=root;
}else{
linkNode node=new linkNode(obj);
end.setNext(node);
end=node;
}
}
得到链表的大小。
如果链表为空,长度就为0,否则,见以下代码:
count++;
linkNode node=root.getNext();
while(node!=null){
count++;
node=node.getNext();
得到结点中存储的数据:
如果不在范围之内,抛出异常
if(index>=size()||index<0){
throw new RuntimeException("给定的值超出范围:index:"+index);
}
在范围之内,找到结点后调用getObject()方法,得到数据。
linkNode node=root.getNext();
while(node!=null){
n++;
if(index==n) return node.getObject();
node=node.getNext();
}
插入结点
如果是在根结点前插入结点
node.setNext(root);
root=node;
如果是在尾结点后插入结点
end.setNext(node);
在根结点之后和尾结点前插入结点
node1=root;
for(int i=0;i<n-1;i++){
node1=node1.getNext();
}
node.setNext(node1.getNext());
node1.setNext(node);
删除结点
删除根结点
node=root.getNext();
root=node;
删除尾结点
node=root;
for(int i=0;i<t-1;i++){
node=node.getNext();
}
end=node;
node1=node.getNext();
node1=null;
删除根结点之后尾结点之前的结点
node=root;
for(int i=0;i<n-1;i++){
node=node.getNext();
}
node1=node.getNext();
node.setNext(node1.getNext());
node1=null;
查询索引值为n的结点
linkNode node;
Object o = null;
node=root;
for(int i=0;i<size();i++ ){
if(i==n) o=node.getObject();
node=node.getNext();
}
return o;
修改结点n的数据为o
linkNode node;
if(n==0) root.setObj(o);
else{
node=root;
for(int i=0;i<n;i++ ){
node=node.getNext();
}
node.setObj(o);
}
结果如下:
- 大小: 59.8 KB
分享到:
相关推荐
数据结构之链表,C#链表 数据结构之链表,C#链表 数据结构之链表,C#链表 数据结构之链表,C#链表 数据结构之链表,C#链表 数据结构之链表,C#链表
算法-数据结构之链表合并算法.rar
C通用范例源代码之数据结构之链表.pdfC通用范例源代码之数据结构之链表.pdfC通用范例源代码之数据结构之链表.pdfC通用范例源代码之数据结构之链表.pdfC通用范例源代码之数据结构之链表.pdfC通用范例源代码之数据结构...
数据结构 数据结构_使用javascript讲解数据结构之链表
C语言中数据结构之链表归并排序实例代码 问题 设有两个无头结点的单链表,头指针分别为ha,hb,链中有数据域data,链域next,两链表的数据都按递增排序存放,现要求将hb表归到ha表中,且归并后ha仍递增序,归并中...
基础数据结构之链表
线性表的存储结构使用链表。 2、提供操作:自表首插入元素、删除指定元素、搜索表中是否有指定元素、输出链表。 3、接收键盘录入的一系列整数(例10,25,8,33,60)作为节点的元素值,创建链表。输出链表内容。 4、输入...
自己写的 数据结构之链表栈与队列 出来与同路的新手分享
数据结构之链表.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
这是一个链表的代码,它对于初学者来说是一个有很好帮助的东西,完全是自己写的,已经通过编程测试,供大家一起来分享!
1.使用Python语言实现链表数据结构 2.基于类封装思想 3.实现链表增删改查功能 4.有测试数据
数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现数据结构顺序链表的实现
本文实例讲述了JS中的算法与数据结构之链表(Linked-list)。分享给大家供大家参考,具体如下: 链表(Linked-list) 前面我们讨论了如何使用栈、队列进行存数数据,他们其实都是列表的一种,底层存储的数据的数据结构都...
单链表 单循环链表 双链表 双循环链表 内容学习于 https://www.bilibili.com/video/BV1W64y1z7jh?p=19&spm_id_from=pageDriver&vd_source=4d33bf4ac4499f2c0370694554a02fa5
主要是针对c++中的链表模版进行了实现,希望可以帮助需要的人
C++数据结构之链表的创建 前言 1.链表在C/C++里使用非常频繁, 因为它非常使用, 可作为天然的可变数组. push到末尾时对前面的链表项不影响. 反观C数组和std::vector, 一个是静态大小, 一个是增加多了会对之前的元素...
list v2 用Object对象,接口inteface,迭代器Iterator实现linklist,Arraylist