面向对象的方法实现链表

5年以前  |  阅读数:342 次  |  编程语言:JAVA 
package LinkList;
//节点类
class Node{
    private Node next;
    private int value;
    Node(int val){
        value=val;
    }
    public int getValue() {
        return value;
    }
    public Node getNext() {
        return next;
    }
    public void setValue(int val) {
        value=val;
    }
    public void setNext(Node nex) {
        next=nex;
    }
}

class MyLinkList{
    private Node head;
    private Node tail;
    private int size=0;
    //添加节点
    public void append(int newData) {
        Node newNode=new Node(newData);
        size++;
        if(head==null) {
            head=newNode;
            tail=newNode;
            return;
        }
        tail.setNext(newNode);
        tail=newNode;
    }
    //插入节点
    public void insert(int position,int newData) {
        Node node=head;
        Node newNode=new Node(newData);
        if(position==0) {
            newNode.setNext(node);
            head=newNode;
        }
        else {
            for(int i=0;i<position-1;i++) {
                node=node.getNext();
            }
            Node nodeNext=node.getNext();
            node.setNext(newNode);
            newNode.setNext(nodeNext);
        }
        size++;
    }
    //获取链表长度
    public int getSize() {
        return size;
    }
    //遍历
    public int getNodeData(int position) {
        if(position<0 || position>=size) {
            return -1;
        }
        Node node=head;
        for(int i=0;i<position;i++) {
            node=node.getNext();
        }
        int data=node.getValue();
        return data;
    }
    //删除节点
    public void delete(int position) {
        Node node=head;
        if(position==0) {
            node=node.getNext();
            head=node;
        }
        else {
            for(int i=0;i<position-1;i++) {
                node=node.getNext();
            }
            Node nextNode=node.getNext();
            node.setNext(nextNode.getNext());
        }
        size-=1;
    }
    //打印链表
    public void show() {
        Node node=head;
        int value;
        for(int i=0;i<size-1;i++) {
            value=node.getValue();
            System.out.print(value);
            System.out.print("->");
            node=node.getNext();
        }
        System.out.print(node.getValue());
        System.out.print("\n");
    }
}
//测试
public class LinkList {
    public static void main(String[] args) {
        MyLinkList link=new MyLinkList();
        for(int i=0;i<20;i+=2)
        link.append(i);
        link.show();
        link.insert(1, 5);
        link.show();
        System.out.println(link.getSize());
        link.delete(2);
        link.show();
        System.out.println(link.getSize());
        System.out.println(link.getNodeData(3));
    }

}
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例