1.定义两个接口
定义线性表的接口:
和顺序表接口一样
插入,删除,获取某个元素等一些基本操作
定义单链表节点的接口:
获取节点数据域
设置节点数据域
2.单链表节点类
两个属性
数据域element
指针域next
3.单链表类的实现
插入操作
将数据元素e插入到object之后
插入前
obj节点 m节点 (obj的下一个节点)
插入后
obj节点 q 节点 m节点 (obj的下一个节点)
public boolean insertBefore(Object obj,Object e){
SLNode p=head.getNext();//获取头节点的下一个节点
while(p!=null){ //头节点的下一个节点有节点
if(p.getData().equals(obj)){//找到元素obj的位置
SLNode q=new SLNode(e,p.getNext);//新建一个节点,data=e,next指向p(即原来obj)的next(m节点)
p.setNext=q;//重新设置p(即obj)的next为新插入的节点q
}
}
删除操作
删除单链表中顺序号为i的元素
public Object delete(int i){
SLNode p=getPreNode(i);//获取序号为i的元素的前驱节点
Object obj=p.getNext().getData();//获取序号为i元素对应的data
p.setNext(p.getNext().getNext());//将元素i之前的元素直接指向元素i的下一个元素
size--;
return obj;//返回被删除的元素i
}