数据结构——Java实现单向链表
结点类:
/**
* @author zhengbinMac
* 一个OnelinkNode类的对象只表示链表中的一个结点,通过成员变量next的自引用方式实现线性表中各数据元素的逻辑关系。
*/
public class OnelinkNode {
// 保存结点的值
public int data;
// 保存后继结点的引用
public OnelinkNode next;
// 构造值为k的结点
public OnelinkNode(int k) {
data = k;
next = null;
}
// 初始化单向链表
public OnelinkNode() {
this(0);
}
}
单向链表类:
/**
* @author zhengbinMac
* Onelink1类的一个对象表示一条单向链表,成员变量head作为链表的头指针,指向
* 链表的第一个结点。head为被保护的(protected),可被其子类继承。
* 当head为null时,表示链表为空,元素个数为0。
*/
public class Onelink1 {
// 指向链表的第一个结点
protected OnelinkNode head;
// 创建一个空的单向链表
public Onelink1() {
head = null;
}
// 构造由h1指向的单向链表
public Onelink1(OnelinkNode h1) {
head = h1;
}
/**
* 判断链表是否为空
*/
public boolean isEmpty() {
return head == null;
}
/**
* 以n个随机值建立单向链表
*/
public Onelink1(int n) {
OnelinkNode rear,q;
if(n > 0) {
int k = (int)(Math.random() * 100);//产生随机数,加入链表
head = new OnelinkNode(k);
rear = head;
for(int i = 1;i < n;i++) {
k = (int)(Math.random() * 100);
q = new OnelinkNode(k);
rear.next = q;
rear = q;
}
}
}
/**
* 返回链表的长度
*/
public int length() {
int n = 0;
OnelinkNode p = head;
while(p != null) {
n++;
p = p.next;
}
return n;
}
/**
* 输出链表
*/
public void output() {
this.output(head);
}
private void output(OnelinkNode head) {
System.out.print(this.getClass().getName() + ": ");
while(head != null) {
System.out.print(head.data);
head = head.next;
if(head != null) {
System.out.print(" -> ");
}
}
System.out.println();
}
}
单向链表的反转:
/**
* @author zhengbinMac
*/
public class Onelink2 extends Onelink1{
public Onelink2() {
super();
}
public Onelink2(int n) {
super(n);
}
public void reverse() {
OnelinkNode p = this.head, q = null, front = null;
/*
* 以下面这个链表为例:
* 1->2->3->4
*/
while(p != null) {
q = p.next; // p = 1, q = 2;
p.next = front; // 1.next = null;下次循环将变为:2.next = 1;
front = p; // front = 1;
p = q; // p = 2;
}
this.head = front;// 循环结束后,front指向原链表的最后一个结点,
}
public static void main(String[] args) {
Onelink2 h2 = new Onelink2(5);
h2.output();
System.out.println("Reverse!");
h2.reverse();
h2.output();
}
}
在线编程:
数据结构——Java实现单向链表的更多相关文章
- Java实现单向链表基本功能
一.前言 最近在回顾数据结构与算法,有部分的算法题用到了栈的思想,说起栈又不得不说链表了.数组和链表都是线性存储结构的基础,栈和队列都是线性存储结构的应用- 本文主要讲解单链表的基础知识点,做一个简单 ...
- C语言 - 基础数据结构和算法 - 单向链表
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- JS数据结构与算法--单向链表
链表结构:链表中每个元素由一个存储元素本身的节点和一个指向下一元素的引用组成.如下所示(手画的,比较丑,懒得用工具画了,嘻嘻) 1.append方法,向链表末尾插入一个节点 2.insert(posi ...
- java实现单向链表的增、删、改、查
单向链表 作者:vashon package com.ywx.link; /** * 单向链表 * @author vashon * */ public class LinkTest { public ...
- 数据结构——Java实现单链表
一.分析 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点由元素和指针构成.在Java中,我们可以将单链表定义成一个类,单链表的基 ...
- java 实现单向链表
package cn.com.factroy2; /** * 可以看做是操作链表的工具类,链表的核心结构就是节点的数据结构 * @author wanjn * */ public class Sing ...
- Java实现单向链表
/* 先定义一个Node类用来存储节点的值域和指针域 * 即当前节点中的值和后面节点的方法 * 在C中就是相当与定义一个结构体类型一个数据域和指针域的方法 */class LNode{//这个写法已经 ...
- 线性数据结构案例1 —— 单向链表中获取倒数k个节点
一.介绍 先遍历整个链表获取链表长度length,然后通过 (length-index) 方式得到我们想要节点在链表中的位置. 二.代码 public Node findLastIndexNode( ...
- Java实现单向链表的增删改查
class List<T> { private class Node { private T data; private Node next; private Node(T data) { ...
随机推荐
- 针对局域网IM飞秋(feiq)的开发总结
先上代码了,通过java代码群发feiq消息: package com.triman.constant; import java.io.IOException; import java.io.Unsu ...
- python--httplib模块使用
httplib是一个相对底层的http请求模块,其上有专门的包装模块,如urllib内建模块,goto等第三方模块,但是封装的越高就越不灵 活,比如urllib模块里请求错误时就不会返回结果页的内容, ...
- Android Non-UI to UI Thread Communications(Part 1 of 5)
original:http://www.intertech.com/Blog/android-non-ui-to-ui-thread-communications-part-1-of-5/ ANDRO ...
- 浅谈Spark Kryo serialization
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3833985.html 最近在使用spark开发过程中发现当数据量很大时,如果cache数据将消耗很多的内 ...
- 扩展 delphi 泛型 以实现类似lambda功能 , C#中的any count first last 等扩展方法
扩展 delphi 泛型 以实现类似lambda功能 , C#中的any count first last 等扩展方法 在C#中对泛型的扩展,输入参数是泛型本身的内容,返回值则是bool.基于这一点, ...
- TaskController.java-20160611
package main.java.com.zte.controller.system; import java.io.PrintWriter;import java.util.ArrayList;i ...
- apache-hadoop-1.2.1、hbase、hive、mahout、nutch、solr安装教程
1 软件环境: VMware8.0 Ubuntu-12.10-desktop-i386 jdk-7u40-linux-i586.tar.gz hadoop-1.2.1.tar.gz eclipse-d ...
- json 得到时分秒为00:00:00,拿不到时分秒 解决办法
数据库查询时间没有了时分秒的解决办法 问题出处,公司一个项目中使用动态sql方式查询Oracle数据库,在展示时Date类型字段只展示日期,无时分秒. 分析: ...
- git环境搭建
Linux kernel 的官方 GIT地址是: http://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git 可以从这个地 ...
- The GPG keys listed not correct
The GPG keys listed for the "Extra Packages for Enterprise Linux 5 - x86_64" repository ar ...