zoukankan      html  css  js  c++  java
  • 用java简单的实现单链表的基本操作

    package com.tyxh.link;  
    //节点类  
    public class Node {  
         protected Node next; //指针域  
         protected int data;//数据域  
           
         public Node( int data) {  
               this. data = data;  
         }  
           
         //显示此节点  
         public void display() {  
              System. out.print( data + " ");  
         }  
    }  
      
    package com.tyxh.link;  
    //单链表  
    public class LinkList {  
         public Node first; // 定义一个头结点  
         private int pos = 0;// 节点的位置  
      
         public LinkList() {  
               this. first = null;  
         }  
      
         // 插入一个头节点  
         public void addFirstNode( int data) {  
              Node node new Node(data);  
              node. next = first;  
               first = node;  
         }  
      
         // 删除一个头结点,并返回头结点  
         public Node deleteFirstNode() {  
              Node tempNode = first;  
               first = tempNode. next;  
               return tempNode;  
         }  
      
         // 在任意位置插入节点 在index的后面插入  
         public void add(int index, int data) {  
              Node node new Node(data);  
              Node current = first;  
              Node previous = first;  
               while ( pos != index) {  
                  previous = current;  
                  current = current. next;  
                   pos++;  
              }  
              node. next = current;  
              previous. next = node;  
               pos = 0;  
         }  
      
         // 删除任意位置的节点  
         public Node deleteByPos( int index) {  
              Node current = first;  
              Node previous = first;  
               while ( pos != index) {  
                   pos++;  
                  previous = current;  
                  current = current. next;  
              }  
               if(current == first) {  
                   first = first. next;  
              } else {  
                   pos = 0;  
                  previous. next = current. next;  
              }  
               return current;  
         }  
      
         // 根据节点的data删除节点(仅仅删除第一个)  
         public Node deleteByData( int data) {  
              Node current = first;  
              Node previous = first; //记住上一个节点  
               while (current. data != data) {  
                   if (current. next == null) {  
                        return null;  
                  }  
                  previous = current;  
                  current = current. next;  
              }  
               if(current == first) {  
                   first = first. next;  
              } else {  
                  previous. next = current. next;  
              }  
               return current;  
         }  
      
         // 显示出所有的节点信息  
         public void displayAllNodes() {  
              Node current = first;  
               while (current != null) {  
                  current.display();  
                  current = current. next;  
              }  
              System. out.println();  
         }  
      
         // 根据位置查找节点信息  
         public Node findByPos( int index) {  
              Node current = first;  
               if ( pos != index) {  
                  current = current. next;  
                   pos++;  
              }  
               return current;  
         }  
      
         // 根据数据查找节点信息  
         public Node findByData( int data) {  
              Node current = first;  
               while (current. data != data) {  
                   if (current. next == null)  
                        return null;  
                  current = current. next;  
              }  
               return current;  
         }  
    }  
      
    package com.tyxh.link;  
    //测试类  
    public class TestLinkList {  
         public static void main(String[] args) {  
              LinkList linkList new LinkList();  
              linkList.addFirstNode(20);  
              linkList.addFirstNode(21);  
              linkList.addFirstNode(19);  
               //19,21,20  
              linkList.add(1, 22); //19,22,21,20  
              linkList.add(2, 23); //19,22,23,21,20  
              linkList.add(3, 99); //19,22,23,99,21,20  
              linkList.displayAllNodes();  
    //        Node node = linkList.deleteFirstNode();  
    //        System.out.println("node : " + node.data);  
    //        linkList.displayAllNodes();  
    //        node = linkList.deleteByPos(2);  
    //        System.out.println("node : " + node.data);  
    //        linkList.displayAllNodes();  
    //        linkList.deleteFirstNode();  
              Node node = linkList.deleteByData(19);  
    //        Node node = linkList.deleteByPos(0);  
              System. out.println( "node : " + node. data);  
              linkList.displayAllNodes();  
              Node node1 = linkList.findByPos(0);  
              System. out.println( "node1: " + node1. data);  
              Node node2 = linkList.findByData(22);  
              System. out.println( "node2: " + node2. data);  
         }  
    }  
  • 相关阅读:
    浏览器渲染
    微信h5页面制作总结
    chrome开发工具指南之综述
    零碎记录
    docker 容器已经启动,但是无法访问
    Docker的安装及使用
    python目录选择
    centos7 设置进程开机自启动
    语句中传入变量
    kafka -> structuredStreaming读取kafka日志 ->自定义输出到mysql
  • 原文地址:https://www.cnblogs.com/hd92/p/13554200.html
Copyright © 2011-2022 走看看