`
huangjun_mail
  • 浏览: 118784 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用java语言实现单链表

    博客分类:
  • Java
阅读更多
1 package com.base.list;
  2 
  3 import java.util.HashSet;
  4 import java.util.Set;
  5 
  6 
  7 public class SingleLinkList {
  8 
  9     class Element {
 10         public Object value = null;
 11         public Element nextNode = null;
 12     }
 13     
 14     class Value
 15     {
 16         public String code;
 17         public String name;
 18         
 19         public Value(){}
 20         public Value(String code, String name){ this.code = code;this.name = name;}
 21         @Override
 22         public String toString() {
 23             return code + "-" + name ;
 24         }
 25         
 26         
 27     }
 28     private Element header = null;
 29 
 30     public static void main(String[] args) {
 31         SingleLinkList list = new SingleLinkList();
 32         Value value1 = list.new Value("1""java");
 33         Value value2 = list.new Value("2""c++");
 34         Value value3 = list.new Value("3""c#");
 35         Value value4 = list.new Value("4""vb");
 36         list.add(value1);
 37         list.add(value2);
 38         list.add(value3);
 39         list.add(value4);
 40         System.out.println("remove vb ?" + list.remove(value4));
 41         System.out.println("have c++ ?" + list.contains(value2));
 42         System.out.println("have vb ?" + list.contains(value4));
 43         System.out.println("list is emptry ? " + list.isEmpty());
 44         System.out.println(list);
 45         list.clear();
 46         System.out.println("list is emptry ? " + list.isEmpty());
 47     }
 48     
 49 
 50     public void add(Object node) {
 51         if (header == null) {
 52             header = new Element();
 53             header.value = null;
 54             header.nextNode = null;
 55         }
 56         Element element = new Element();
 57         element.value = node;
 58         element.nextNode = header.nextNode;
 59         header.nextNode = element;
 60     }
 61 
 62     public void clear() {
 63         header = null;
 64     }
 65 
 66     public boolean contains(Object o) {
 67         if(header==null)
 68             return false;
 69         Element eqEl = header.nextNode;
 70         while(eqEl!=null)
 71         {
 72             if(eqEl.value==o)
 73             {
 74                 return true;
 75             }
 76             eqEl = eqEl.nextNode;
 77         }
 78         return false;
 79     }
 80 
 81     
 82     public String toString() {
 83         int size = this.size();
 84         String print = "";
 85         if(size==0)
 86             return print; 
 87         forint i = 0; i < size ;i ++)
 88         {
 89             print = "," + this.get(i) + print;
 90         }
 91         print = "[" + print.substring(1+ "]";
 92         return print;
 93     }
 94 
 95 
 96     public Object get(int index) {
 97         if(header==null)
 98             return null;
 99         int size = this.size();
100         if(index > (size - 1|| index < 0)
101         {
102             return null;
103         }
104         Element temp = header.nextNode;
105         int i  = 0;
106         while(temp!=null)
107         {
108             if(index == i)
109             {
110                 return temp.value;
111             }
112             i++;
113             temp = temp.nextNode;
114         }
115         return null;
116     }
117 
118     private Element getElement(int index) {
119         if(header==null)
120             return null;
121         int size = this.size();
122         if(index > (size - 1|| index < 0)
123         {
124             return null;
125         }
126         Element temp = header.nextNode;
127         int i  = 0;
128         while(temp!=null)
129         {
130             if(index == i)
131             {
132                 return temp;
133             }
134             i++;
135             temp = temp.nextNode;
136         }
137         return null;
138     }
139     
140 
141     public boolean isEmpty() {
142         if(header==null)
143             return true;
144         else
145             return false;
146     }
147 
148 
149     public boolean remove(Object o) {
150         if(header==null)
151             return false;
152         Element eqPreEl = header;
153         Element eqEl = header.nextNode;
154         while(eqEl!=null)
155         {
156             if(eqEl.value==o)
157             {
158                 eqPreEl.nextNode = eqEl.nextNode;
159                 return true;
160             }
161             eqPreEl = eqEl;
162             eqEl = eqEl.nextNode;
163         }
164         return false;
165     }
166 
167     public int size() {
168         if(header==null)
169             return 0;
170         Element temp = header.nextNode;
171         int i  = 0;
172         while(temp!=null)
173         {
174             i++;
175             temp = temp.nextNode;
176         }
177         return i;
178     }
179     
180     /**
181      * 检查环状单链表
182      * @return
183      */
184     public boolean checkLoop()
185     {
186         if(header==null)
187             return false;
188         int size = this.size();
189         if(size==0)
190             return false
191         Set<Element> set = new HashSet<Element>();
192         forint i = 0; i < size ;i ++)
193         {
194             Element el = getElement(i);
195             if(!set.contains(el)){
196                 set.add(el);
197             }
198             if(set.contains(el.nextNode))
199             {
200                 return true;
201             }
202         }
203         return false;
204     }
205 }
206 

 

分享到:
评论

相关推荐

    Java实现单链表以及单链表的操作.zip

    本教程将深入探讨如何使用Java语言来实现单链表及其相关操作。 首先,我们来理解单链表的基本概念。单链表由一系列节点组成,每个节点包含两部分:数据域(用于存储数据)和指针域(指向下一个节点)。链表的最后一...

    Java实现单链表的基本操作

    本文将深入探讨如何使用Java语言实现单链表的基本操作,包括创建链表、插入节点、删除节点以及遍历链表等关键功能。 首先,我们需要理解单链表的概念。单链表是一种线性数据结构,其中每个元素(称为节点)包含两个...

    Java实现的单链表

    用Java语言实现的单链表,有增加节点、删除节点、查询节点和打印链表的功能,Java和数据结构初学者的必备程序!

    Java单链表的实现代码

    本篇文章将深入探讨如何使用Java语言实现单链表,并对其基本操作进行详细阐述。 单链表是由一系列节点构成,每个节点包含两部分:数据元素(data)和指向下一个节点的引用(next)。在Java中,我们可以使用类来表示...

    Java单链表基本操作的实现

    在计算机科学中,链表是一种基础且重要的数据结构,它与数组类似,但有其独特的优势。本篇文章将深入探讨Java中的单链表及其基本操作的实现。...希望这个简短的介绍能够帮助你更好地理解和使用Java中的单链表。

    JAVA单链表操作实验

    在JAVA语言中,单链表是非常重要的数据结构之一,它可以用于实现各种高效的算法,例如排序、搜索等。在实际应用中,单链表可以用于解决许多实际问题,例如数据压缩、数据加密等。 本实验可以帮助我们更好地理解...

    基于Java实现的单链表基本操作之获取链表长度.zip

    本教程主要探讨的是如何在Java编程语言中实现单链表的基本操作,特别是如何获取链表的长度。下面我们将深入讨论相关知识点。 首先,我们需要理解单链表的概念。单链表是由一系列节点构成的,每个节点包含两部分:...

    基于Java实现的单链表基本操作之链表合并.zip

    单链表是数据结构中的一个基础元素,...这个项目提供了一种具体实现单链表合并的Java代码,可以帮助学习者深入理解链表操作,并能应用于实际问题解决。通过对这个项目的实践,可以提升对数据结构的理解,增强编程能力。

    Java单链表增删改查的实现

    下面我们将详细探讨如何在Java中实现单链表的增、删、改、查功能,以及如何进行选择排序、冒泡排序和反转排序。 1. **单链表的定义**: - 单链表的每个节点通常包括两部分:数据域(存储元素)和指针域(存储下一...

    数据结构单链表的详细设计分析(Java 版本的)

    本篇文章将深入探讨如何使用Java语言实现单链表,并对其进行详细的设计分析。 单链表是由一系列节点组成的数据结构,每个节点包含两部分:数据元素(也称为元素或值)和指向下一个节点的引用。在Java中,我们可以...

    Java算法实例-单链表操作

    在这个"Java算法实例-单链表操作"中,我们将探讨如何在Java中实现单链表,包括其基本操作如插入、删除、遍历等。这些操作对于理解和解决各种算法问题至关重要,尤其对于学习和准备编程考试的学员来说,是非常实用的...

    Java自己实现一个单链表

    本文将深入探讨如何使用Java语言自己实现一个单链表,包括其核心概念、基本操作以及相关的代码实现。 首先,我们要了解单链表的基本概念。单链表是由一系列节点构成的,每个节点包含两个部分:数据域,存储实际的...

    java 数据结构单链表的实现

    Java 数据结构单链表的实现是 Java 语言中的一种基本数据结构,通过定义链表节点和链表操作工具类来实现。链表的基本操作包括插入、删除和遍历,并且链表的应用非常广泛。 因此,本文通过介绍 Java 数据结构单链表...

    Java泛型单链表

    【Java泛型单链表】是一种使用Java编程语言实现的数据结构,主要涉及到链表的创建、插入、删除等基本操作。在Java中,泛型允许我们编写可重用的代码,适用于多种数据类型,而无需进行重复的类型转换。在这个实现中,...

    算法-单链表遍历及反转(java)(csdn)————程序.pdf

    算法-单链表遍历及反转(Java)(csdn)————程序.pdf的标题主要讲述了单链表的遍历和反转操作,使用Java语言实现。 描述解释 单链表遍历及反转是数据结构中的一种常见操作,单链表是一种基本的数据结构,它由...

    java数据结构之单链表

    Java作为一种广泛使用的面向对象的编程语言,提供了丰富的数据结构支持。本文将深入探讨Java中的单链表,这是一种基本但至关重要的数据结构。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两个部分:...

    单链表双向链表java实现

    在这个话题中,我们将深入探讨两种基本的线性数据结构——单链表和双向链表,并通过Java语言来实现它们。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两个部分:数据域和指针域。数据域存储实际的数据...

    JAVA单链表.rar

    在Java中,实现单链表通常通过定义一个Node类来表示链表节点,然后创建一个LinkedList类来管理这些节点。Node类通常包括一个数据字段和一个指向下一个节点的引用字段。例如: ```java public class Node { int ...

    java第一次作业 单链表逆序

    要实现单链表的逆序,你可以采用以下几种方法: 1. **迭代法**: 这是最直观的方法,使用三个指针`prev`、`current`和`next`。初始化时,`prev`为空,`current`为头节点。遍历链表,每次迭代将`current`的`next`...

    数据结构与算法(JAVA语言版)

    数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。...通过阅读《数据结构与算法(JAVA语言版)》这本书,你将深入理解这些概念,并能熟练运用Java语言实现它们,从而提升你的编程能力。

Global site tag (gtag.js) - Google Analytics