单链表

存储结构

public class ListNode {
int i;
ListNode next;
ListNode(int i) {
this.i = i;
}
public String toString() {
return String.valueOf(i);
}
}

1、头插法建表

static ListNode creatFromHead() {
ListNode head = new ListNode(-1);
for(int i = 1; i < 5;i++) {
ListNode p = new ListNode(i);
p.next = head.next;
head.next = p;
}
return head;
}

2、尾插法建表

static ListNode creatFromTail() {
ListNode head = new ListNode(-1);
ListNode next = head;
for(int i = 1; i < 5; i++) {
ListNode p = new ListNode(i);
next.next = p;
next = p;
}
return head;
}

 3、查找第i个节点

static boolean find(ListNode l, int i) {
if(l != null) {
System.out.println("nullpointer");
}
if(l.next == null || i <=0) { return false; }
ListNode p = l.next;
int j = 1;//统计第几个节点
while((p.next != null) && (j<i)) {
p = p.next;
j++;
}
if(i == j) {
return true;
}
return false;
}

 4、按值查找

static boolean findValue(ListNode l, int i) {
if(l != null) {
System.out.println("nullpointer");
}
if(l.next == null) { return false; }
ListNode p = l.next;
while(p != null) {
if(p.i == i) { return true; }
p = p.next;
}
return false;
}

 5、计算链表长度

static int length(ListNode l) {
if(l != null) {
System.out.println("nullpointer");
}
int count = 0;
if(l.next == null) { return 0; }
ListNode p = l.next;
while(p != null) {
count++;
p = p.next;
}
return count;
}

 6、插入元素

static boolean add(ListNode l, int i, ListNode element) {
if(l != null && element != null) {
System.out.println("nullpointer");
}
//判断输入i
//if(i ) {}
ListNode p = l;
int j = 0;
while(p.next != null && j < i-1) {
p = p.next;
j++;
}
if(j == (i-1)) {
element.next = p.next;
p.next = element;
return true;
}
return false;
}

 7、打印链表

static void printLinkList(ListNode head) {
if(head != null) {
System.out.println("nullpointer");
}
head = head.next;
while(head != null) {
ListNode next = head.next;
System.out.print(head + " ");
head = next;
}
System.out.println();
}

链表的删除操作就不说了,和上面的操作差不多,先找第i-1各元素,然后改指针就OK,比较简单。

循环链表,在表的首尾进行操作比较合适。

双向链表,寻找前驱节点比较合适。

操作方式都差不多,还是要把最基本的单链表搞会,其他的变化一下就好。

链表操作Java实现的更多相关文章

  1. JAVA 链表操作:循环链表

    主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...

  2. 线性表概述及单链表的Java实现

    一.线性表概述 线性表是指一组数据元素之间具有线性关系的元素序列,它表现为:除第一个元素没有直接前驱元素.最后一个元素没有直接后继元素外,其余所有元素都有且仅有一个直接前驱元素和直接后继元素. 根据存 ...

  3. 算法是什么(二)手写个链表(java)

    算法是什么(二)手写个链表(java)   liuyuhang原创,未经允许禁止转载 目录 算法是什么(〇) 很多语言的API中都提供了链表实现,或者扩展库中实现了链表. 但是更多的情况下,Map(或 ...

  4. 数据结构之链表及其Java实现

    数据的存储一般分线性存储结构和链式存储结构两种.前者是一种顺序的存储方式,在内存中用一块连续的内存空间存储数据,即逻辑上相连的物理位置相邻,比较常见的就是数组:后者是一种链式存储方式,不保证顺序性,逻 ...

  5. 使用BeanUtils工具类操作Java bean

    1.类的属性: 1).在Java EE中,类的属性通过setter和getter定义:类中的setter(getter)方法去除set(get)后剩余的部分就是类的属性 2).而之前叫的类的属性,即成 ...

  6. 单链表操作B 分类: 链表 2015-06-07 12:42 15人阅读 评论(0) 收藏

    数据结构上机测试2-2:单链表操作B TimeLimit: 1000ms Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除 ...

  7. YTU 2620: B 链表操作

    2620: B 链表操作 时间限制: 1 Sec  内存限制: 128 MB 提交: 418  解决: 261 题目描述 (1)编写一个函数createlink,用来建立一个动态链表(链表中的节点个数 ...

  8. Arrays 类操作 Java 的数组排序

    使用 Arrays 类操作 Java 中的数组 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等( ...

  9. C# 链表操作

    关于链表操作,在C#当中微软已经提供了一个LinkedList<T>的数据结构,通过这个类提供的一系列方法就能够实现链表操作. 这里我提供一段代码,这是在论坛里面有人提问时给出的代码,它实 ...

随机推荐

  1. tensorflow 框架图

  2. Python数据抓取(3) —抓取标题、时间及链接

    本次分享,jacky将跟大家分享如何将第一财经文章中的标题.时间以及链接抓取出来 (一)观察元素抓取位置 网页的原始码很复杂,我们必须找到特殊的元素做抽取,怎么找到特殊的元素呢?使用开发者工具检视每篇 ...

  3. 栈的数组和链表实现(Java实现)

    我以前用JavaScript写过栈和队列,这里初学Java,于是想来实现栈,基于数组和链表. 下面上代码: import java.io.*; //用接口来存放需要的所有操作 interface st ...

  4. Python实用黑科技——解包元素(1)

    需求: 很多时候手上已经有了一个具有n个元素的列表或者元组,你打算把这些元素单独取出来(解包)放入n个变量组成的集合(这里的集合和Python自己的set不同)中. 方法: 显然,最好的办法就是直接用 ...

  5. html,css,js实现的一个钟表

    效果如图: 实现代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  6. js的dom操作(整理)(转)

    js的dom操作整理(整理)(转) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来来更加方便的进行dom操作 1.dom是什么? 对于JavaS ...

  7. css3_1

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. You don't have permission to access / on this server. wampserver3.1.0配置外网访问的问题

    参考各种wamp教程后外网仍然不能访问服务器,很是头疼 网上好多wampserver配置都比较久远,最新版本3.1.0的很少,首先打开httpd.conf文件(这部分较简略,详细可以参考其他wamp配 ...

  9. Docker镜像搭建ubuntu下samba目录共享

    第一种方法:(未使用) yum install docker // 下载镜像 docker pull dperson/samba // 启动镜像,具体看文档,但重要的配置是以下的注释 docker r ...

  10. 实体类(VO,DO,DTO)的划分

    实体类(VO,DO,DTO)的划分 (2011-12-21 15:50:27) 转载▼ 标签: it   经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度 ...