链表操作Java实现
单链表
存储结构
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实现的更多相关文章
- JAVA 链表操作:循环链表
主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...
- 线性表概述及单链表的Java实现
一.线性表概述 线性表是指一组数据元素之间具有线性关系的元素序列,它表现为:除第一个元素没有直接前驱元素.最后一个元素没有直接后继元素外,其余所有元素都有且仅有一个直接前驱元素和直接后继元素. 根据存 ...
- 算法是什么(二)手写个链表(java)
算法是什么(二)手写个链表(java) liuyuhang原创,未经允许禁止转载 目录 算法是什么(〇) 很多语言的API中都提供了链表实现,或者扩展库中实现了链表. 但是更多的情况下,Map(或 ...
- 数据结构之链表及其Java实现
数据的存储一般分线性存储结构和链式存储结构两种.前者是一种顺序的存储方式,在内存中用一块连续的内存空间存储数据,即逻辑上相连的物理位置相邻,比较常见的就是数组:后者是一种链式存储方式,不保证顺序性,逻 ...
- 使用BeanUtils工具类操作Java bean
1.类的属性: 1).在Java EE中,类的属性通过setter和getter定义:类中的setter(getter)方法去除set(get)后剩余的部分就是类的属性 2).而之前叫的类的属性,即成 ...
- 单链表操作B 分类: 链表 2015-06-07 12:42 15人阅读 评论(0) 收藏
数据结构上机测试2-2:单链表操作B TimeLimit: 1000ms Memory limit: 65536K 题目描述 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除 ...
- YTU 2620: B 链表操作
2620: B 链表操作 时间限制: 1 Sec 内存限制: 128 MB 提交: 418 解决: 261 题目描述 (1)编写一个函数createlink,用来建立一个动态链表(链表中的节点个数 ...
- Arrays 类操作 Java 的数组排序
使用 Arrays 类操作 Java 中的数组 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等( ...
- C# 链表操作
关于链表操作,在C#当中微软已经提供了一个LinkedList<T>的数据结构,通过这个类提供的一系列方法就能够实现链表操作. 这里我提供一段代码,这是在论坛里面有人提问时给出的代码,它实 ...
随机推荐
- 苹果系统OSX中Automator批量重命名
Automator,看字面意思就无比强大,[自动机器].有什么能比自动还让人着魔? 答案是没有✔ 如果你用的是mac,如果你有一堆文件要重新整理命名,如果你还在Goole什么"批量重命名软件 ...
- MongoDB系列一:MongoDB文档型数据库特点介绍
一.MongoDB数据库的存储特点: 1.MongoDB是文档型数据库,存储的是文档(将json二进制化为Bson存储): 2.存储的每篇文档都可以有自己独特的存储结构,颠覆了传统数据库必须按照表和列 ...
- Linux设备驱动程序 之 自旋锁
概念 自旋锁可以再不能休眠的代码中使用,比如中断处理例程:在正确使用的情况下,自旋锁通常可以提供比信号量更高的性能: 一个自旋锁是一个互斥设备,它只能由两个值,锁定和解锁:通常实现为某个整数值中的单个 ...
- 码支付(php版本)应用
1.下载软件 2.安装php 版本 2.打开软件,登陆支付宝 3.codepay_config.php 中填写逻辑代码 4.充值路径: 说明:$username = trim($_GET['user ...
- JDK与CGlib动态代理的实现
应用的原型为 执行者:房屋中介Agency(分为JDKAgency.CGlibAgency) 被代理对象:程序员Programmer 被代理对象的实现接口:租户Tenement(CGlibAgency ...
- Raspberry PI 2上的802.11ac网卡驱动编译
Raspberry PI 2上的802.11ac网卡驱动编译 最近在树莓派2上折腾视频,用来做FPV,但是发现2.4G的控会严重干扰2.4G WIFI,在开控的时候我的台式机+外置USB网卡都频频掉线 ...
- Mysql 逗号分隔行列转换总结
方法一 存储过程实现: -- 修改结束符,防止在mysql命令行中默认分号直接运行 delimiter $$ -- 创建一个计算拆分后字符串的个数函数 drop function if exists ...
- LC 781. Rabbits in Forest
In a forest, each rabbit has some color. Some subset of rabbits (possibly all of them) tell you how ...
- css滚动条美化
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ ::-webkit-scrollbar { width: 5px; height: 5px; background-color: #F5F5 ...
- easyUI之Dialog(对话框窗口)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...