链表的实现(Java语言描述)
代码如下:
public interface ListInterface<T> {
public T getElem(int i);
public boolean insertElem(int i,T t);
public T deleteElem(int i);
}
public class Node<T> {
public T data;
public Node<T> next;
public T getData(){
return data;
}
public void setData(T data){
this.data = data;
}
public Node<T> getNext(){
return next;
}
public void setNext(Node<T> next){
this.next = next;
}
}
import java.io.*;
import java.util.*; public class Linklist<T> implements ListInterface<T> {
public Node<T> head;
public int length;
public Linklist(T[] at){//头插法建立单链表。
T t;
this.length = 11;
Node<T> p;
head = new Node<T>();
//head.next = null;
//Scanner scanner = new Scanner(System.in);
//T s = scanner.nextLine();
int i=0;
while(i<at.length){
t = at[i];
p = new Node<T>();
p.data = t;
p.next = head.next;
head.next = p;//头插法!
i++;
}
}
public Linklist(Node<T> head){
this.head = head;
}
public T getElem(int i){
int j = 0;
Node<T> n = head;
while(n != null){
if(j == i){
return n.getData();
}
n = n.getNext();
j++;
}
return null;
}
public boolean insertElem(int i,T t){
if(i<0 || i>length){
System.out.println("插入位置不合法!");
return false;
}else{
if(head==null && i==1){
head = new Node<T>();
head.setData(t);
length++;
return true;
}
else if(head!=null && i==1){
Node<T> tempNode = new Node<T>();
tempNode.setData(t);
tempNode.setNext(head);
head = tempNode;
length++;
return true;
}else{
Node<T> n = this.head;
int j = 1;
while(n!=null && j<i-1){
n = n.getNext();
j++;
}
Node<T> tempNode = new Node<T>();
tempNode.setData(t);
tempNode.setNext(n.getNext());
n.setNext(tempNode);
length++;
}
return true; }
}
public T deleteElem(int i){
if(head==null || i<1 || i>length){
System.out.println("删除位置不合法!");
return null;
}
T old;
if(head!=null && i==1){
old = head.getData();
head = head.getNext();
}else{
Node<T> n = this.head;
int j = 1;
while(n!=null && j<i-1){
n = n.getNext();
j++;
}
old = n.getNext().getData();
n.setNext(n.getNext().getNext());
}
length--;
return old;
}
public Node<T> getHead(){
return this.head;
}
public int getLength(){
return this.length;
}
public void setHead(Node<T> head){
this.head = head;
}
public void setLength(int length){
this.length = length;
}
public void display(){
Node<T> p;
int i = 0;
p = head.next;
while(p!=null){
System.out.print(p.data + " ");
p = p.next;
}
}
}
import java.util.*;
import java.io.*; public class LinkedlistTest { public static void main(String[] args) {
// TODO 自动生成的方法存根
Integer[] arr = new Integer[10];
Scanner scan = new Scanner(System.in);
for(int i=0; i<10; i++){
arr[i] = scan.nextInt();
}
Linklist<Integer> list = new Linklist<Integer>(arr);
list.display();
System.out.println();
System.out.println(list.getElem(5));
System.out.println(list.insertElem(5, 78));
list.display();
System.out.println();
System.out.println("要删除的元素是:"+list.deleteElem(5));
list.display(); } }
链表的实现(Java语言描述)的更多相关文章
- 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)
三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述) 用经典矩阵转置算法和普通的三元组矩阵转置在时间复杂度上都是不乐观的.快速转置算法在增加适当存储空间后实现快速转置具体原理见代码注释部 ...
- 数据结构(java语言描述)
概念性描述与<数据结构实例教程>大同小异,具体参考:http://www.cnblogs.com/bookwed/p/6763300.html. 概述 基本概念及术语 数据 信息的载体,是 ...
- 数据结构(Java语言描述)-第一章:概述
第一章 概述 1.0 序言 自己为啥要学数据结构嘞,我觉得主要有以下三个原因: 前段时间在看并发编程时,发现aqs,corrunthashmap等底层都用到了数据结构,主要的有队列,还有链表,学习数据 ...
- 利用栈实现算术表达式求值(Java语言描述)
利用栈实现算术表达式求值(Java语言描述) 算术表达式求值是栈的典型应用,自己写栈,实现Java栈算术表达式求值,涉及栈,编译原理方面的知识.声明:部分代码参考自茫茫大海的专栏. 链栈的实现: pa ...
- 【数据结构】之二叉树(Java语言描述)
有关树的一些基础知识点请参考[这篇文章]. 本文主要记录Java语言描述的二叉树相关的一些操作,如创建.遍历等. 首先,我们需要一个表示树中节点的数据结构TreeNode,代码如下: public c ...
- 数据结构与抽象 Java语言描述 第4版 pdf (内含标签)
数据结构与抽象 Java语言描述 第4版 目录 前言引言组织数据序言设计类P.1封装P.2说明方法P.2.1注释P.2.2前置条件和后置条件P.2.3断言P.3Java接口P.3.1写一个接口P.3. ...
- 《数据结构与算法分析-Java语言描述》 分享下载
书籍信息 书名:<数据结构与算法分析-Java语言描述> 原作名:Data Structures and Algorithm Analysis in Java 作者: 韦斯 (Mark A ...
- 【数据结构】之链表(Java语言描述)
以前写过一篇帖子,记录了链表在C语言中的描述代码.C语言中没有链表的直接实现,因此,我们需要自己编写代码实现.请参考[我的这篇文章]. Java中默认为我们提供了链表的API—— LinkedList ...
- 数据结构--Java语言描述
本篇文章是为了记录自己在学习数据结构时的笔记,会对常见的数据结构做基本的介绍以及使用Java语言进行实现.包括 动态数组 栈 队列 链表 二分搜索树 优先队列和堆 线段树 Trie树 并查集 AVL树 ...
随机推荐
- 【Vegas原创】EXCEL光标所在的行自动变色
方法: 1,excel中,按Alt+F11,打开VBA编辑界面,双击需要改的工作表名称,将下面代码粘贴到右边框中,即可. 2,代码: Private Sub Worksheet_Selection ...
- supervisor监控gearman任务
安装supervisor方法,可以直接用 yum install supervisord ,但是版本可能会旧一点,可以参考官方的方法: easy_install supervisor http://s ...
- Spark随机深林扩展—OOB错误评估和变量权重
本文目的 当前spark(1.3版)随机森林实现,没有包括OOB错误评估和变量权重计算.而这两个功能在实际工作中比较常用.OOB错误评估可以代替交叉检验,评估模型整体结果,避免交叉检验带来的计算开销. ...
- 特征工程(Feature Enginnering)学习记要
最近学习特征工程(Feature Enginnering)的相关技术,主要包含两块:特征选取(Feature Selection)和特征抓取(Feature Extraction).这里记录一些要点 ...
- Codeforces Round #379 (Div. 2) B. Anton and Digits 水题
B. Anton and Digits 题目连接: http://codeforces.com/contest/734/problem/B Description Recently Anton fou ...
- Python: 测试函数是否被调用
# helper class defined elsewhere class CallLogger(object): def __init__(self, meth): self.meth = met ...
- UML 六种关系
.继承, 男人 和 人 的关系2.实现, 孕妇 和 生宝宝 的关系3.依赖, 人 和 大米.水4.关联, 男人 和 工作5.聚合, 弱整体和部分, 轮子和车6.组合, 强整体和部分, 眼睛和人 参考: ...
- android 九宫加密记事本
自己写的超级安全记事本,用PBEWithMD5AndDES加密sqlite内容几乎无法破解, 九宫点密码登录, 支持备份到SDcard,email,network drivers etc. 附件Apk ...
- 没有 RunInstallerAttribute.Yes 的公共安装程序。在 C:/Program/xx.exe 程序集中可能可以找到
今天在装服务的时候,装了半天总是提示 没有 RunInstallerAttribute.Yes 的公共安装程序.在 C:/Program/xx.exe 程序集中可能可以找到“Yes”属性. 才发现同事 ...
- Gson整合Volley返回对象--GsonRequest
Gson是一个使用映射支持JSON与Java对象之间相互转换的库文件.你可以定义和JSON keys相对应名称的Java对象.把对象传递给传递Gson,然后Gson会帮你为对象填充字段值. 下面是一个 ...