数据结构与算法(1)---Java语言实现:线性表的单链表定义
来源:互联网 发布:mac os操作系统教程 编辑:程序博客网 时间:2024/06/11 23:35
单链表的结点定义:
package 数据结构;//定义单链表的数据类型,存储数据以int型为例public class Slinklist {private int data;private Slinklist next=null;public Slinklist(int data,Slinklist next){this.data=data;this.next=next;}public void setData(int data){this.data=data;}public int getData(){return data;}public void setNext(Slinklist next) {this.next=next;}public Slinklist getNext(){return next;}}
自定义越界异常:
package 数据结构;//运行时异常是编译器无法检测的public class OutofBoundaryException extends RuntimeException{public OutofBoundaryException(String str){super(str);}}
线性表的单链表表示:
package 数据结构;import java.util.IllegalFormatCodePointException;public class Xianxingbiao {public int size;public Slinklist head;//辅助方法1:获取元素e的前驱节点:public Slinklist getPre(int e){Slinklist p=head;while (p.getNext()!=null)if(p.getNext().getData()==e) return p;p=p.getNext();return null;}//辅助方法2:获取位置i元素的前驱节点public Slinklist getIndexPre(int i){Slinklist p=head;while (i--!=0) p=p.getNext();return p;}//返回线性表大小public int getSize(){return size;}//判断线性表是否为空public boolean isEmpty(){return size==0;}//判断线性表是否包含元素epublic boolean isContain(int e){Slinklist p=head.getNext();while(p!=null)if (p.getData()==e) return true;p=p.getNext();return false;}//返回元素e的位置public int indexOf(int e){//先判断元素e是否包含在链式线性表中int index=0;while(isContain(e)){Slinklist p=head.getNext();while(p!=null)if (p.getData()==e) return index;else {p=p.getNext();index++;}}//输出位置为-1表示该线性表中不包含该元素return -1;}//将元素e插入i位置public void insertIndex(int e,int i) throws OutofBoundaryException{//判断i是否在合规if (i>size||i<0) throw new OutofBoundaryException("索引越界");Slinklist n=getIndexPre(i);//定义新的链表节点用来存储数据eSlinklist m=new Slinklist(e, n.getNext());n.setNext(m);}//将元素e放在元素p之前public void insertBefore(int e,int p) throws OutofBoundaryException{if(!isContain(p)) throw new OutofBoundaryException("线性表中不存在元素e");Slinklist q=getPre(p);Slinklist m=new Slinklist(e, q.getNext());q.setNext(m);}//将元素e放在元素p之后public void insertAfter(int e,int p) throws OutofBoundaryException{if(!isContain(p)) throw new OutofBoundaryException("线性表中不存在元素e");Slinklist m=head.getNext();while (m!=null){if (m.getData()!=p) m=m.getNext();Slinklist n=new Slinklist(e, m.getNext());m.setNext(n);}}//删除下标为i的元素public void rmIndex(int i) throws OutofBoundaryException{//第一个元素的index是0,最后一个元素的下标是size-1;if(i>=size||i<0) throw new OutofBoundaryException("索引越界了");Slinklist p=head.getNext();Slinklist m=head;while(i--==0)p=p.getNext();m=m.getNext();m.setNext(p.getNext());}//删除元素e,代码展示删除第一个值为m的结点public void rmEle(int e) throws OutofBoundaryException{if(!isContain(e))throw new OutofBoundaryException("线性表中不存在元素e");//调用之前定义的方法获取元素e的索引int i =indexOf(e);//调用之前的方法,删除索引为i的元素rmIndex(i);}//获取下标为i的元素public Slinklist getIndex(int i) throws OutofBoundaryException{if(i>=size||i<0) throw new OutofBoundaryException("索引越界了");Slinklist p=head.getNext();while (i -- !=0) p=p.getNext();return p;}//将下标为i的元素替换为epublic void exChange(int e,int i){if(i>=size||i<0) throw new OutofBoundaryException("索引越界了");Slinklist m=getIndex(i);m.setData(e);}//线性表添加元素epublic void addEle(int e){Slinklist m=new Slinklist(e, null);Slinklist p=head;while(p.getNext()!=null) p=p.getNext();p.setNext(m);}}
阅读全文
0 0
- 数据结构与算法(1)---Java语言实现:线性表的单链表定义
- 数据结构与算法(2)---Java语言实现:线性表的单链表定义:方法补充,实现单链表反转,去重
- 数据结构与算法(3)---Java语言实现:栈的单链表定义
- 数据结构与算法(4)---Java语言实现:队列的单链表定义
- 数据结构与算法-线性表的定义与特点
- 数据结构线性表顺序结构的定义与实现C语言
- Java版常见数据结构与算法1 -- 数据结构 --线性表
- 【数据结构】数据结构C语言的实现(线性表)
- 【数据结构—1】线性表的概念与定义
- 数据结构与算法Java版——线性顺序表的实现
- 数据结构C语言实现线性表(顺序实现)的初始化与基本操作
- 算法与数据结构--实现线性表的合并操作(合并后按非递减排列)--算法2.6
- 数据结构算法代码实现——线性表的链式表示与实现(单链表)(三 )
- 数据结构算法代码实现——线性表的顺序表示与实现(二)
- 数据结构算法代码实现——线性表的定义(一)
- 数据结构之单向线性表 c语言与java语言实现
- 数据结构 线性表算法的实现
- java数据结构与算法-线性表与链表(1)
- 指向对象成员的指针
- easyui中combotree根据关键字进行本地过滤
- 【R语言 预测数值型数据】多元回归、神经网络预测数值型目标变量
- CSS画图
- Android反编译APK -- Ubuntu下
- 数据结构与算法(1)---Java语言实现:线性表的单链表定义
- Jave入门安装教程
- Thinkphp PHPExcel table数据生成Excel
- oracle通过sql获取表结构
- 51nod 1083 矩阵取数问题
- 安卓Java转kotlin
- Unity 物体不旋转方向 向自身0-360度方向移动
- java 中 hashCode方法
- Java入门(6)——集合、基本数据类型和引用数据类型的相互转换