链表的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,则新 ...
随机推荐
- javaScript事件(五)事件类型之鼠标事件
一.事件 二.事件流 以上内容见:javaScript事件(一)事件流 三.事件处理程序 四.IE事件处理程序 以上内容见javaScript事件(二)事件处理程序 五.事件对象 以上内容见javaS ...
- BNUOJ 52325 Increasing or Decreasing 数位dp
传送门:BNUOJ 52325 Increasing or Decreasing题意:求[l,r]非递增和非递减序列的个数思路:数位dp,dp[pos][pre][status] pos:处理到第几位 ...
- SSH----MVC框架模式与分层架构
MVC框架模式 MVC框架模式是web开发中一种软件设计典范,他的全名是(Model -View -Controller),是模型(model)--视图(view)--控制器(controller)的 ...
- HDU2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活[多重背包]
悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- WAMP中phpMyAdmin登陆不了问题的解决方法
WAMP中phpMyAdmin登陆不了问题的解决方法
- Eclipse tooltip变黑的修正
- JS常用方法函数整理
1.document.write("");为输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4. ...
- java(搜索不区分大小写)
ref.put("myfield", Pattern.compile(".*myValue.*" , Pattern.CASE_INSENSITIVE));
- json格式的优点
总结:1.占带宽小(格式是压缩的)2. js通过eval()进行Json读取(便于客户端读取)3. JSON支持多种语言(c.c++.php等),便于服务端解析 JSON (JavaScript Ob ...
- 推薦使用 Microsoft Anti-Cross Site Scripting Library V3.0
原文出至: http://blog.miniasp.com/post/2009/07/29/Recommand-Microsoft-Anti-Cross-Site-Scripting-Library- ...