单链表的增删改查
public class MyLinked {
Node first;
int size;
//在单链表末尾插入
public void add(Object value){
Node node=new Node(value);
if(first==null){
first=node;
}else {
Node stemp=first;
while (stemp.next!=null){
stemp=stemp.next;
}
stemp.setNext(node);
}
size++;
}
//在单链表中间插入
public void add(Object value, int index) {
Node newNode = new Node(value);
//直接在末尾插入
if (index > size - 1) {
add(value);
} else {
Node pre = first;
Node oldNode = first;
for (int i = 0; i < index; i++) {
//pre设置成插入位置的前一个结点
if (i == index - 1) {
pre = oldNode;
}
//遍历
oldNode = oldNode.getNext();
}
pre.setNext(newNode);
//newNode为新插入节点,
newNode.setNext(oldNode);
size++;
}
}
//取出指定编号位置的节点值
public Object get(int index){
Node temp=first;
for(int i=0;itemp=temp.getNext();
}
return temp.getValue();
}
//删除元素
public void delete(int index){
//为空
if(index>size-1){
return;
}
//删除头节点
if (index==0){
first=first.getNext();
}else {
Node temp=first;
for (int i=0;i
//节点类
class Node{
private Node next;
private Object value;
public Node(Object value) {
this.value = value;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
int length(){
return size;
}
}
public static void main(String[] args) {
MyLinked myLinked=new MyLinked();
myLinked.add(1);
myLinked.add(3);
myLinked.add(8);
myLinked.remove(8);
myLinked.remove(3);
myLinked.getAll();
}
}