- 单向链表结构
每个节点有数值域和指针域,指针指向下一个节点位置。
- 增加节点
尾部指针由空变为只指向下一个节点 - 删除节点
将待删除的节点的上一个节点指针指向待删除节点下一个节点地址
循环打印就可以了
源代码
package linearSturcture;
/**
* 线性结构-线性表-链式存储
* @author cx998
*
*/
public class LinkedStorage {
private Node root;//根节点
private int size;//当前链式表大小
/**
* 添加节点
* @param value
*/
public void add(Object value)
{
if(root==null)
{
root=new Node(value);
size++;
}
else
{
Node n=root;
while(n.getNext()!=null)
{
n=n.getNext();
}
n.setNext(new Node(value));
size++;
}
}
/**
* 删除节点
* @param index
*/
public void delete(int index)
{
int flag=0;//标志位,当前指针位置
if(index>=size||index<0)
throw new RuntimeException("非法访问!");
else if(index==0)
{
root=root.getNext();
size--;
}
else
{
Node n=root;
while(n.getNext()!=null)
{
flag++;
if(flag==index)
{
n.setNext(n.getNext().getNext());
size--;
break;
}
n=n.getNext();
}
}
}
/**
*打印当前链式表
*/
public void display()
{
System.out.println("当前链式表大小"+size);
for(Node i=root;i!=null;i=i.getNext())
{
if(i.getNext()!=null)
System.out.print(i.getValue()+"->");
else
System.out.print(i.getValue());
}
}
}
/**
* 节点类
* @author cx998
*
*/
class Node{
private Object value;//节点数据ֵ
private Node next;//节点指针
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Node(Object value)
{
this.value=value;
}
}