Java程序设计之链表结构
唉,说点废话,昨天偶尔看到一年前自己用C解约瑟夫环问题的循环链表,唏嘘不已,想想自己一年前嵌入式的梦呢,这两天发生了许多,而有些人不在了就真的不在了,心情不好,不多说了,直接上代码,只是些链表的基本操作,花些功夫看就好了。
首先,建立一个Node类,里面内构一个Node对象和数据(用来区分);
public class Node {
protected Node next; //指针
protected int data; //数据
public Node(int data){
this.data = data;
}
//显示节点
public void display(){
System.out.println(data+" ");
}
}
然后创建一个LinkList类,里面包含了链表的一些基本方法,
public class LinkList {
public Node first; //定义一个头结点
public LinkList(){
this.first = null;
}
//插入一个头结点
public void addFirstNode(int data){
Node node = new Node(data);
node.next = first;
first = node;
}
//删除一个头节点,并返回头结点
public Node deleteFirstNode(){
Node tempNode = first;
first = tempNode.next;
return first;
}
//在替换掉index后面的节点。
public void add(int index , int data){
Node node = first;
Node current = first;
while(index-->0){
current = node.next;
node = current;
}
current.data = data;
}
//在第index节点后面插入节点
public void Insert(int index , int data){
Node node = new Node(data);
Node current = first;
Node privious = first;
while(index-->0){
privious = current;
current = current.next;
}
node.next = current;
privious.next = node;
}
//删除任意位置的节点
public void delete(int index){
Node current = first;
Node privious = first;
while(index-->0){
privious = current;
current = current.next;
}
if(current == first){
first = first.next;
}else{
privious.next = current.next;
}
}
//根据data的值删除节点,删除找到的第一个节点
public void deleteData (int data){
Node privious = first;
Node current = first;
while(current.data!=data){
privious = current;
current = current.next;
}
if(current == first){
first = first.next;
}else{
privious.next = current.next;
}
}
}
再建立一个主类,
public class TestLink {
public static void main(String[] args){
LinkList l = new LinkList();
l.addFirstNode(1);
l.addFirstNode(2);
l.addFirstNode(3);
Node node = l.first;
l.Insert(2, 5);
l.deleteData(5);
while(node!=null){
node.display();
node = node.next;
}
}
}
实在是没有心情继续写了,希望以后会好点,2015年8月9日18:55分。
Java程序设计之链表结构的更多相关文章
- 《Java数据结构》链表结构(单向链表,双向链表)
单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始:链表是使用指针进行构造的列表:又称为结点列表,因为链表是由一个个结点组装起来的:其中每个结点都有指 ...
- java实现线性链表结构
package com.hephec.ds; public class LinkedList<T> { //定义一个内部类节点Node Node实例代表链表的节点 class Node{ ...
- (原创)用Java实现链表结构对象:单向无环链表
转载请注明本文出处:http://www.cnblogs.com/Starshot/p/6918569.html 链表的结构是由一个一个节点组成的,所谓链,就是每个节点的头尾连在一起.而单向链表就是: ...
- java实现链表结构详细代码
一.数据准备 1. 定义节点 2. 定义链表 1.数据部分 2.节点部分 class DATA //数据节点类型 { String key; String name; int age; } cla ...
- Java实现链表结构的具体代码
一.数据准备 1. 定义节点 2. 定义链表 1.数据部分 2.节点部分 class DATA //数据节点类型 { String key; String name; int age; } cla ...
- 20145320《Java程序设计》第3周学习总结
20145320<Java程序设计>第3周学习总结(第四章) 教材学习内容总结 对象(Object):存在的具体实体,具有明确的状态和行为 类(Class):具有相同属性和行为的一组对象的 ...
- 20155214 2016-2017-2 《Java程序设计》第5周学习总结
20155214 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 1.错误会被包装为可抛出的对象,继承自java.lang.Throwable类. 2.可以利 ...
- 20155215 2016-2017-2 《Java程序设计》第5周学习总结
学号 2006-2007-2 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 尝试捕捉错误对象,try,catch. 如何抛出错误对象,throw语法. error代表系统错 ...
- 20175209 《Java程序设计》第八周学习总结
20175209 <Java程序设计>第八周学习总结 一.教材知识点总结 1.泛型 1.泛型类声明: 格式 class People<E> People是泛型类名称 E是泛型列 ...
随机推荐
- 后台管理UI的选择
最近要做一个企业的OA系统,以前一直使用EasyUI,一切都好,但感觉有点土了,想换成现在流行的Bootstrap为基础的后台UI风格,想满足的条件应该达到如下几个: 1.美观.大方.简洁 2.兼容I ...
- OpenNLP:驾驭文本,分词那些事
OpenNLP:驾驭文本,分词那些事 作者 白宁超 2016年3月27日19:55:03 摘要:字符串.字符数组以及其他文本表示的处理库构成大部分文本处理程序的基础.大部分语言都包括基本的处理库,这也 ...
- js实现StringBuffer
实现 function StringBuffer() { this.__strings__ = []; }; StringBuffer.prototype.Append = function (str ...
- 新年抢红包效果(New Year Red Packet)
新年抢红包效果(New Year Red Packet) 晓娜的文章(微信公众号:migufe) 2016即将过去,我们将迎来新的一年2017,这里小编提前祝大家新年快乐!万事如意!那我们新年最开心的 ...
- Python基础(二)
本章内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典.set集合) for 循环 enumrate range和x ...
- Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始
时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...
- Windows下Memcached安装与配置实例
环境声明: 服务器: Windows Server 2008r2: Memcached: Memcached 64-bit for Windows(64位) From: http://www.urie ...
- Node.js 给前端带来了什么
在软件开发领域,前端工程师曾经是一个比较纠结的职业.在Web技术真正发展起来之前的相当长一段时间里,由于技术门槛很低,前端工程师行业一直是鱼龙混杂的状态.其中很多号称是Web开发者的人实际上并没有什么 ...
- SimpleSSO:使用Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端
目录 前言 OAuth2.0简介 授权模式 (SimpleSSO示例) 使用Microsoft.Owin.Security.SimpleSSO模拟OpenID认证 通过authorization co ...
- spring aop对service层日志和异常的处理
1.aop是什么 AOP是Aspect Oriented Programming的缩写,意思是面向切面编程,与OOP(Object Oriented Programming)面向对象编程对等,都是一种 ...