数据结构——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) { ...
随机推荐
- 【hdu2815-Mod Tree】高次同余方程-拓展BadyStepGaintStep
http://acm.hdu.edu.cn/showproblem.php?pid=2815 题意:裸题... 关于拓展BSGS的详细解释我写了一篇博文:http://www.cnblogs.com/ ...
- iOS xcode缓存问题
Question: When I try to build my app in Xcode, I get this error message:PCH file built from a differ ...
- Tomcat配置https及访问http自动跳转至https
https介绍: HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全 ...
- SQLServer2008 行转列
with a as( select *,row_number() over(partition by hyid order by jp desc) rowid from rtc) select a.h ...
- HDU4749 Parade Show(KMP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4749 题意:给出两个数字串A.B.问A中有多少不相交的子串a能匹配B.匹配的意思是a中任意两个位置i和 ...
- 寄售Consignment和VMI有什么区别?
Consignment 寄存一般是指卖方把货物存放在买方所属仓库,消耗后结帐.库存水平控制和货物的物理管理都由买方负责.这是目前很多大卖场通行的做法.典型的VMI一般也是指卖方把货物存放在买方附近的仓 ...
- JUnit 4
本文是转载的, 主要介绍 Junit 4 ( 搭建在 eclipse 中 ) JUnit4 初体验 Eclipse: 下载 Ant, 基于java的开源构建工具, 你可以在 http://ant.ap ...
- HeadFirst 12 (web应用安全)
测试领域可以使用的方法,在tomcat-users.xml 中设置授权, 为什么这个不能在生产环境中呢, 因为如果这个设置在生产环境中, 那么当你想修改”授权时”, 就要修改这个xml文件, 那么就要 ...
- VS2008下使用 CMFCPropertyGridCtrl 转载
http://blog.csdn.net/sunnyloves/article/details/5655575 在DLG中的基本应用 . 首先在Cxxdlg.h文件中加入 public: CMFCPr ...
- minimum-genetic-mutation
题目还是很好的,提供了一种新的思路方向. 细节方面,开始我的判断条件用的dict,不太好,后来debug好了. 另外,注意其中用数组初始化Set的方法:Set<String> dict = ...