用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

面向对象的方法实现链表

2019-09-28 作者:whoami举报

[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));
	}

}


分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。