java链表的各种操作
java里面没有指针的说法,所以初始化的时候,就是新建一个null节点就是一个空链表了。//C里面链表会有头指针,头指针指向头节点
如果想向空链表插入第一个节点,直接head=newNode;
注意的情况是
如果想循环链表,一定新建一个节点把head考出来,然后遍历,不能直接用head遍历
/**
* Created by Administrator on 2017-10-27.
*/
public class linkedListFuns { public static void main(String[] arg) {
Node head = new Node(1);
for(int i=2;i<10;i++){
insertFromTail(head,new Node(i));
}
printList(head);
deleteFromIndex(head,3);
printList(head); } static class Node {
int data;
Node next; public Node(int d) {
data = d;
next = null;
}
} //从头节点插入,比较简单不用遍历链表
public static void insetFromHead(Node head,Node newNode){
newNode.next=head;
head = newNode;
} //在尾部插入,要遍历链表
public static void insertFromTail(Node head1, Node newNode){
if(head1 == null){ //如果是个空链表,直接把新节点赋值给head,然后结束,要先判断null的情况 其实这是一段错误代码,大家可以查看我另外一篇文章,Java参数引用传递之例外:null
head1 =newNode;
return;
}
Node temp = head1; //用temp代替head去遍历找到最后一个节点,一定不要用head自己去遍历,不然就找不到链表头了
while (temp.next!=null){
temp=temp.next;
}
temp.next=newNode;
} //计算链表的长度
public static int length(Node head){
int len =0;
Node temp = head;
while(temp!=null){
len++;
temp=temp.next;
}
return len;
} //从特定位置删除一个节点
public static boolean deleteFromIndex(Node head,int index){
if(index<1||index>length(head)){ //先判断是否越界
return false;
}
if(index ==1){//如果是删除第一个元素,因为直接涉及到了head所以只能单独处理
head = head.next;
return true;
}
Node curNode = head;
for(int curIndex =1;curIndex<index-1;curIndex++){ //删除顺序为index的node只能将curNode停在index-1的位置
curNode = curNode.next;
}
curNode.next=curNode.next.next;
return true;
} //按照顺序输出一个列表
public static void printList(Node head){
Node temp = head;
while(temp != null){
System.out.print(temp.data+" ");
temp = temp.next;
}
System.out.println();
}
//对链表进行冒泡排序
public static void orderList(Node head){ } }
java链表的各种操作的更多相关文章
- Java链表的一些操作:
[还有一些其他的算法提]http://blog.csdn.net/WalkingInTheWind/article/category/906980 [转]http://blog.csdn.net/lu ...
- Java实现单链表的各种操作
Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素 4.实现链表的反转 5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...
- JAVA 链表操作:循环链表
主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...
- Java实现 蓝桥杯VIP 算法训练 链表数据求和操作
算法训练 9-7链表数据求和操作 时间限制:1.0s 内存限制:512.0MB 读入10个复数,建立对应链表,然后求所有复数的和. 样例输入 1 2 1 3 4 5 2 3 3 1 2 1 4 2 2 ...
- Java 链表
按链表的组织形式分有ArrayList和LinkList两种.ArrayList内部其实是用数组的形式实现链表,比较适合链表大小确定或较少对链表进行增删操作的情况,同时对每个链表节点的访问时间都是co ...
- 算法_栈与队列的Java链表实现
链表是一个递归的数据结构,它或者为null,或者是指向一个结点的引用,该结点含有一个泛型的元素和指向另一个链表的引用.可以用一个内部类来定义节点的抽象数据类型: private class Node ...
- java中的集合操作类(未完待续)
申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...
- Java链表基本操作和Java.util.ArrayList
Java链表基本操作和Java.util.ArrayList 今天做了一道<剑指offer>上的一道编程题“从尾到头打印链表”,具体要求如下:输入一个链表,按链表值从尾到头的顺序返回一个A ...
- JAVA链表中迭代器的实现
注:本文代码出自<java数据结构和算法>一书. PS:本文中类的名字定义存在问题,Link9应改为Link.LinkList9应该为LinkList.由于在同包下存在该名称,所以在后面接 ...
随机推荐
- 阿里云rds 磁盘空间满导致实例锁定
1.RDS 数据日志已经快满了, 导致数据库不能写入,只读. 2. Binlog日志的保存及清理规则 MySQL实例的空间内默认清理binlog日志的规则如下: 实例空间内默认会保存最近18个小时内的 ...
- Python 字符串 整数 浮点数
• 几个函数: str() : 将一个整数或者浮点数变成字符串 int() : 将一个浮点数或一个字符串变成整数 float : 将一个整数或者字符串变成一个浮点型数据 • 整数的运算永远是精确的,而 ...
- jquery 3.0 新版本
https://code.jquery.com/
- Linux重定向与管道
程序执行时默认会打开3个流,标准输入.标准输出.标准错误. Redirection The shell interprets the symbols <,>, and >> a ...
- openstack系列文章(四)
学习 openstack 的系列文章 - Nova Nova 基本概念 Nova 架构 openstack Log Nova 组件介绍 Nova 操作介绍 1. Nova 基本概念 Nova 是 op ...
- DevOps on AWS之OpsWorks初体验
AWS OpsWorks 是一款配置管理服务,提供 Chef 和 Puppet 的托管EC2虚拟机实例.Chef 和 Puppet 是自动化平台,允许用户使用代码来自动配置服务器.用户借助OpsWor ...
- UVa 10055
说一下犯错的地方: 1)没有注意数据范围,题目中是The input numbers are not greater than balabalabala. 而这个32位的int类型恰好装不下2^32, ...
- XGB算法梳理
学习内容: 1.CART树 2.算法原理 3.损失函数 4.分裂结点算法 5.正则化 6.对缺失值处理 7.优缺点 8.应用场景 9.sklearn参数 1.CART树 CART算法是一种二分递归分割 ...
- IE10不能显示JSON文件内容
IE7,8,9下Ajax返回后,再执行跳转,会弹出阻止提示框. 所以我采用WebForm 提交思想: //导出 jv.postOpen = jv.PostOpen = jv.Export = func ...
- Python序列之元组 (tuple)
作者博文地址:http://www.cnblogs.com/spiritman/ Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号, ...