如何实现单链表的增删改查

如何实现单链表的增删改查
1.链表的特点
(1)可以用任意一组存储单元来存储单链表中的元素(存储单元可以是不连续的)
(2)存储每个数据元素的值外,还必须存储指示直接后继元素的信息
2.java语言中,用如下数据类来存储结点信息

class Node{
     Node next = null;
     int data;
     public Node(int data) {this.data = data;}
     }

3.单链表的插入操作
将值为x的新结点插入到单链表的第i个结点的位置上,具体操作步骤如下:
(1)找到ai-1的引用(存储地址)p
(2)生成一个数据域为x的新结点s
(3)设置p.next=s
(4)设置s.next=a
4.单链表的删除操作
(1)找到ai-1的存储位置p
(2)令p.next指向ai的直接后继结点ai+1
5.给出代码

public class MyLinkedList{
   Node head = null;
   /**
   *向链表中插入数据
   */
   public void addNode(int d){
      Node newNode = new Node(d);
      if(head==null){
         head=newNode;
         return;
       }
       Node tmp = head;
       while(tmp.next!=null){
         tmp = tmp.next;
       }
       //add node to end
       tmp.next=newNode;
   }
   /**
   *删除第index个结点
   */
   public Boolean deleteNode(int index){
      if(index<1||index>lengeh()){
         return false;
       }
       //删除第一个元素
       if(index == 1{
       head=head.next;
       return true;
       }
       int i=2;
       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++;
      }
  }
  /**
  *返回结点长度
  */
  public int length(){
    int length = 0;
    Node tmp=head;
    while(tmp!=null){
       length++;
       tmp=tmp.next;
    }
    return length;
 }
 /**
 *对链表进行排序
 */
 public Node orderList(){
    Node nextNode =null;
    int temp=0;
    Node curNode=head;
    while(curNode.next!=null){
       nextNode=curNode.next;
       while(nextNode!=null){
          if(curNode.data>nextNode.data){
             temp=curNode.data;
             curNode.data=nextNode.data;
             nextNode.data=temp;
          }
          nextNode=nextNode.next;
       }
       curNode=curNode.next;
   }
   return head;
 }
 //打印链表
 public void printList(){
   Node tmp = head;
   while(tmp!=null){
     System.out.println(tmp.data);
     tmp=tmp.next;
   }
 }
}

以上例子主要实现了链表的基本操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值