Algorithm - using a single linked list structure

package com.demo.calculate;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import com.demo.calculate.bean.ChainNode;

public class ChainActivity extends Activity {
    @Override
    protected void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chain);
        findViewById(R.id.btn_createSingleChain).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                createSingleChain();
            }
        });
    }
    private void createSingleChain() {
        ChainNode node1 = new ChainNode(1);
        ChainNode node2 = new ChainNode(2);
        ChainNode node3 = new ChainNode(3);
        ChainNode node4 = new ChainNode(4);
        //添加节点
        node1.append(node2).append(node3).append(node4);
        //展示所有节点
        node1.show();
        //插入节点
        node4.insertNode(new ChainNode(6));
        node1.show();
        //删除节点
        node3.deleteNode();
        node1.show();
        //判断是不是最后一个节点
        boolean last = node4.isLast();
        Log.i("tag",last+"");
    }
}
package com.demo.calculate.bean;

import android.util.Log;

public class ChainNode {
    private int value;
    private ChainNode next;

    public ChainNode(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public ChainNode append(ChainNode chainNode) {
        ChainNode currentNode = this;
        //循环判断当前节点是不是最后一个节点
        while (true) {
            ChainNode nextNode = currentNode.next;
            if (nextNode == null) {
                break;
            }
            currentNode = nextNode;
        }
        currentNode.next = chainNode;
        return this;
    }

    /**
     * 显示所有节点信息
     */
    public void show() {
        ChainNode currentNode = this;
        while (true) {
            Log.i("tag", currentNode.getValue() + "");
            currentNode = currentNode.next;
            if (currentNode == null) {
                break;
            }
        }
    }

    /**
     * 插入节点
     *
     * @param node
     */
    public void insertNode(ChainNode node) {
        //获取当前节点的下一个节点
        ChainNode nextNext = next;
        //把插入的节点作为当前节点的下一个节点
        this.next = node;
        //把当前节点的下一个节点作为插入节点的下一个节点
        node.next = nextNext;
    }

    /**
     * 删除节点
     */
    public void deleteNode() {
        //取到要删除节点的下下一个节点作为该节点的下一个节点
        ChainNode nextNext = next.next;
        this.next = nextNext;
    }
    /**
     * 判断当前节点是不是最后一个节点
     */
    public boolean isLast(){
        return this.next == null;
    }
}

Guess you like

Origin blog.csdn.net/xjz19930319/article/details/92978718