博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构学习(四) Java链表实现
阅读量:4965 次
发布时间:2019-06-12

本文共 3332 字,大约阅读时间需要 11 分钟。

package linklist;/** * @Title: LinkedListDemo * @ProjectName demo */public class LinkedListDemo
{ private class Node { private E e; private Node next; public Node(E e, Node next) { this.e = e; this.next = next; } public Node(E e) { this(e, null); } public Node() { this(null, null); } @Override public String toString() { return e.toString(); } } private int size; private Node dummyHead; public LinkedListDemo() { size = 0; dummyHead = new Node(); } public int getSize() { return this.size; } public boolean isEmpty() { return size == 0; } public void add(int index, E e) { if (index < 0 || index > size) { throw new IllegalArgumentException("add error index."); } Node prev = dummyHead; for (int i = 0; i < index; i++) { prev = prev.next; } prev.next = new Node(e, prev.next); size ++; } public void addFirst(E e) { add(0, e); } public void addLast(E e) { add(size, e); } public E remove(int index) { if (index < 0 || index >= size) { throw new IllegalArgumentException("remove error index."); } Node prev = dummyHead; for (int i = 0; i < index; i++) { prev = prev.next; } Node curNode = prev.next; prev.next = curNode.next; curNode.next = null; return curNode.e; } public E removeFirst() { return remove(0); } public E removeLast() { return remove(size - 1); } public void removeElement(E e){ Node prev = dummyHead; while (prev.next != null) { if (prev.next.e.equals(e)) { break; } prev = prev.next; } if (prev.next != null) { Node delNode = prev.next; prev.next = delNode.next; delNode.next = null; size --; } } public void set(int index, E e) { if (index < 0 || index > size) { throw new IllegalArgumentException("set error index"); } Node cur = dummyHead.next; for (int i = 0; i < index; i++) { cur = cur.next; } cur.e = e; } public E get(int index) { if (index < 0 || index >= size) { throw new IllegalArgumentException("Get error index"); } Node cur = dummyHead.next; for (int i = 0; i < index; i++) { cur = cur.next; } return cur.e; } public E getFirst() { return get(0); } public E getLast() { return get(size - 1); } public boolean contains(E e) { Node cur = dummyHead.next; while (cur != null) { if (cur.e.equals(e)) { return true; } cur = cur.next; } return false; } @Override public String toString() { StringBuilder sb = new StringBuilder(); for (Node cur = dummyHead.next; cur != null; cur = cur.next) { sb.append(cur.toString() + "--->"); } sb.append("NULL"); return sb.toString(); }}

  

转载于:https://www.cnblogs.com/412013cl/p/11004493.html

你可能感兴趣的文章
Eclipse快捷键大全
查看>>
Let's Chat ZOJ - 3961
查看>>
该不该主动去联系多年未联系的老同学?看完这篇文章你再回答
查看>>
业务逻辑漏洞个人经验集锦【不定时更新~】
查看>>
[Swift] Storyboard outlet and action
查看>>
[Compose] 10. Capture Side Effects in a Task
查看>>
[Javascript AST] 0. Introduction: Write a simple BabelJS plugin
查看>>
[Core Javascirpt] Basic Metaprogramming: Dynamic Method
查看>>
[Angular2 Router] Use Params from Angular 2 Routes Inside of Components
查看>>
makefile
查看>>
Spring 构造注入和Set注入复习
查看>>
<mvc:annotation-driven/>的作用
查看>>
服务器一:分布式服务器结构
查看>>
迭代dict的value
查看>>
eclipse package,source folder,folder区别及相互转换
查看>>
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>
如何从亿量级中判断一个数是否存在?
查看>>
客户数据(类的调用)
查看>>
cookie session 和登录验证
查看>>
为mysql数据库建立索引
查看>>