链表的Java实现
import java.lang.System;
public class Hello
{
public static void main(String[] args)
{
LinkList List = new LinkList();
List.add(1);
List.add(2);
List.add(3);
List.add(4);
List.print();
int data;
data = List.deleteElemAt(2);
List.print();
System.out.println("the value of data deleted is :"+data);
List.reverse();
List.print();
}
}
class Node//元素结点
{
public int data;
public Node next;
public Node(int data)
{
this.data = data;
this.next = null;
}
}
class LinkList
{
private Node head;//头结点指针
private int length;//链表长度
private Node tail;//尾结点指针
public LinkList()
{
head = new Node(0);
head.next = null;
tail = head;
}
public void insert(int index, int e)
{
if(index>this.length+1 || index<=0) return ;
if(index==this.length+1)
{
this.add(e);
}
Node p = this.head;
int i=0;
while(p.next != null)
{
++i;
if(i==index)
{
Node temp = new Node(e);
temp.next = p.next;
p.next = temp;
++this.length;
}
p = p.next;
}
}
public void add(int e)
{
Node temp = new Node(e);
this.tail.next = temp;
this.tail = temp;
++ this.length;
}
public boolean isEmpty()
{
return length == 0;
}
public void reverse()
{
Node p = this.head.next;
Node q = null;
this.head.next = null;
while(p!=null)
{
q = p;
p=p.next;
q.next = this.head.next;
this.head.next = q;
}
}
public void print()
{
Node p = this.head.next;
while(p!=null)
{
System.out.print(p.data+"\t");
p=p.next;
}
System.out.println();
}
public int length()
{
return this.length;
}
public int deleteElemAt(int index)
{
if(index>this.length || index<=0) return -9999;
Node p = this.head;
int i = 0;
while(p.next != null)
{
++i;
if(i==index)
{
Node temp = p.next;
p.next = temp.next;
return temp.data;
}
p = p.next;
}
return -9999;
}
}
//结果:
D:\Tools\UltraEdit-32\Data
λ java Hello
1 2 3 4
1 3 4
the value of data deleted is :2
4 3 1
链表的Java实现的更多相关文章
- 线性表概述及单链表的Java实现
一.线性表概述 线性表是指一组数据元素之间具有线性关系的元素序列,它表现为:除第一个元素没有直接前驱元素.最后一个元素没有直接后继元素外,其余所有元素都有且仅有一个直接前驱元素和直接后继元素. 根据存 ...
- 算法是什么(二)手写个链表(java)
算法是什么(二)手写个链表(java) liuyuhang原创,未经允许禁止转载 目录 算法是什么(〇) 很多语言的API中都提供了链表实现,或者扩展库中实现了链表. 但是更多的情况下,Map(或 ...
- 数据结构之链表及其Java实现
数据的存储一般分线性存储结构和链式存储结构两种.前者是一种顺序的存储方式,在内存中用一块连续的内存空间存储数据,即逻辑上相连的物理位置相邻,比较常见的就是数组:后者是一种链式存储方式,不保证顺序性,逻 ...
- 剑指offer面试题5 从头到尾打印链表(java)
注:(1)这里体现了java数据结构与C语言的不同之处 (2)栈的操作直接利用stack进行 package com.xsf.SordForOffer; import java.util.Stack; ...
- 单链表数据结构 - java简单实现
链表中最简单的一种是单向链表,每个元素包含两个域,值域和指针域,我们把这样的元素称之为节点.每个节点的指针域内有一个指针,指向下一个节点,而最后一个节点则指向一个空值.如图就是一个单向链表 一个单向链 ...
- 使用java实现单链表----(java中的引用就是指针)
//一直以为java中没有指针,其实java的引用就是指针,只不过堆栈中的引用储存了在堆中的地址,可以看做java中的指针.public class sibgleLink<E> { // ...
- 【数据结构】之链表(Java语言描述)
以前写过一篇帖子,记录了链表在C语言中的描述代码.C语言中没有链表的直接实现,因此,我们需要自己编写代码实现.请参考[我的这篇文章]. Java中默认为我们提供了链表的API—— LinkedList ...
- LeetCode 链表题 ( Java )
leetcode 237. 删除链表中的节点 链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 示例 : 输入: he ...
- 剑指Offer-16.合并两个排序的链表(C++/Java)
题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 分析: 可以用一个新的节点,来去比较两个单调递增的链表当前节点的值,如果p1当前的值小于p2,则新 ...
随机推荐
- 贪心法 codevs 1052 地鼠游戏
1052 地鼠游戏 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 王钢是一名学习成绩优异的学生,在平 ...
- Java开发之JSP行为
一.Java Bean行文 1.重点说明 Java Bean行为是一组与Java Bean相关的行为,包括useBean行为.setProperty行为.getProperty行为等.Java Bea ...
- NVIDIA显卡设置
在玩3D游戏时,因为我的显卡不是特别给力,所以针对性能做出牺牲质量换取性能的调整. 简单设置 简单的方法是,3D设置-通过预览调整图像设置,根据偏重点来设置平衡:性能或者质量. 高级设置 如果你想自行 ...
- JSP前三章错题整理
A: B: C: D: web-inf目录中的文件不能被客户端直接访问. 正确答案是 C 您回答的是 D 回答错误 试题分析纠错设为收藏 (选择一项) 14 A: B: C: Tomcat作为Web ...
- 网络流-最大流问题 ISAP 算法解释(转自Renfei Song's Blog)
网络流-最大流问题 ISAP 算法解释 August 7, 2013 / 编程指南 ISAP 是图论求最大流的算法之一,它很好的平衡了运行时间和程序复杂度之间的关系,因此非常常用. 约定 我们使用邻接 ...
- View.inflate和LayoutInflater的inflate方法区别
平时ListView加载item中,adapter的getView方法中,我们经常用到: LayoutInflater.from(mContext).inflate(R.layout.it ,pare ...
- BZOJ 1257: [CQOI2007]余数之和sum
1257: [CQOI2007]余数之和sum Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 3769 Solved: 1734[Submit][St ...
- javascript中的链表结构—从链表中删除元素
1.概念 上一个博文我们讲到链表,其中有一个方法remove()是暂时注释的,这个方法有点复杂,需要添加一个Previous()方法找到要删除的元素的前一个节点,这一个博文我们来分析一下这个remov ...
- matlab:启动后无法调用工具包
matlab有时候一打开会出现warning,然后任何工具包(包括set path)都执行不了,在网上找到解决方法,存下来备用. 1. 在matlab的command里输入: restoredefau ...
- IO调度器(二) IO的中断返回
IO的中断返回也是相当让人激动的一件事情: 28470 1) | handle_irq() { 28471 1) 0.237 us | ...