单向链表的java实现

本文详细介绍了链表这一数据结构的特点及其实现方式,包括插入、删除等关键操作,并提供了完整的Java实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链表这种数据结构,各对象按照线性顺序进行排列,每一个对象包含一个关键字域以及两个指针next和prev

下面是链表的示意图:

下面再来看一下链表的删除以及插入操作(删除插入是链表擅长的,效率要比数组高很多)

2.插入

3.删除

最后贴出实现链表的代码:

package aa;

public class MyList {
	Node head=null;
	class Node{
		Node next=null;
		Object data;
		public Node(Object data){
			this.data=data;
		}
	}
	//返回链表的长度
	public int length(){
		int length=0;
		Node pointer=head;
		while(pointer!=null){
			length++;
			pointer=pointer.next;
		}
		return length;
	}
	//插入节点
	public void insert(Object data){
		Node nodew=new Node(data);
		if(head==null){
			head=nodew;
			return;
		}
		Node pointer=head;//指向head
		while(pointer.next!=null){
			pointer=pointer.next;
		}
		pointer.next=nodew;
	}
	//删除节点
	public boolean delete(int index){
		if(index<1||index>length()){
			return false;
		}
		if(index==1){//如果删除的是头节点,那么直接将头节点指向下一个节点
			head=head.next;
			return true;
		}
		int i=1;
		Node preNode=head;
		Node curNode=preNode.next;
		while(curNode!=null){
			if(i==index){//
				preNode.next=curNode.next;
				return true;
			}
			preNode=curNode;
			curNode=curNode.next;
			i++;
		}
		return false;
	}
	//打印链表
	public void printList(){
		Node pointer=head;
		while(pointer!=null){
			System.out.println(pointer.data);
			pointer=pointer.next;
		}
	}
	public static void main(String[] args){
		MyList mylist=new MyList();
		mylist.insert(1);
		mylist.insert(2);
		mylist.insert(3);
		mylist.insert("pg");
		mylist.insert("sg");
		mylist.insert("pf");
		mylist.insert("pg");
		mylist.insert("C");
		System.out.println(mylist.length());
		mylist.delete(2);
		mylist.printList();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值