链表的基本操作-增删改查

    链表是一种存储结构,由一系列的结点组成。链表包括单向链表,循环链表,双向链表等,在这里,我们只讲单向链表,单向链表的每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。所以创建链表时,可以先写一个结点类:

public class Node {
	
		public Node node;
	public 	Node next;
		public int a;
		public Node(int a){
			this.a=a;
		}
	}


创建一个链表时,可以先创建一个空链表,然后不断往空链表中插入元素:

public class LinkList {
       
		Node head=null;
		Node last=head;
		/**
		 * 链表的插入方法
		 * @param a
		 */
	public void insert(int a){
			Node node=new Node(a);
			if(head==null){
				head=node;
			}else{
				last.next=node;
			}
			last=node;
		}
		/**
		 * 链表的创建
		 */
		public void createLink(){
			insert(2);
			insert(4);
			insert(1);
			insert(9);
			insert(6);
		}
               }


一个链表创建好以后,我们就可以对链表进行操作了,链表的最基本操作是增删改查,增即往链表中插入元素,以后代码已经显示了,接下来我们进行删改查链表和得到链表的长度:

/**
     * 链表元素的删除
     * @param index
     */
    public void delete(Object obj){
    	if(head !=null){
    	  Node node=head;
    	  Node node1=node.next;
    	  while(node1!=null){
    	   if(node1.obj.equals(obj)){
    		   node.next=node1.next;
    		   node1=node1.next;
    	   }else{
    		   node=node.next;
    		   node1=node1.next;
    	   }
    	   
    	  }
       }
    }
    /**
     * 根据指定位置查找元素
     * @param index 位置
     */
    public void find (int index){
    	 Node node=head;
    	 for(int i=0;i<index-1;i++){
    	 node=node.next;
    	 }
    	 System.out.println("链表中第"+index+"个元素的值为"+node.obj);
    }
    /**
     * 修改第index的值为obj
     * @param index
     * @param obj
     */
    public void modify(int index,Object obj1){
    	Node node=head;
    	for(int i=0;i<index-1;i++){
    		node=node.next;
    	}
    	node.obj=obj1;
    }
    /**
     * 得到链表的长度
     * @return
     */
    public int length(){
    	int length=0;
    	Node node=head;
          while(node!=null){
        	  length++;
        	  node=node.next;
          }
    	return length;
    	
    }


接下来是进行链表的打印操作,在这里用到了递归:

/**
     * 打印链表函数
     */
    public void printList(Node head){
         Node node=head;
    	while(node!=null){
    		System.out.println(node.obj);
    		node=node.next;
    	}
    
    }


好了,链表的基本操作已经完成了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值