java基础之旅-链表的设计

原创 2016年05月31日 19:14:50

贴个练习的代码:

package com.liberty;

public class A {

	public static void main(String[] args) {
		Link link = new Link();
		link.add("头");
		link.add("身");
		link.add("尾");
		System.out.println(link.size());

		
		
		
	}

}
class Link{
	class Node{
		private String data;//要保存的对象数据
		private Node next;//要引用的下一个节点
		public Node(String data){
			this.data = data;
		}
		public void printNode(){
			System.out.println(this.data);
			if(this.next != null){
				this.next.printNode();
			}
			
		}
		public void addNode(Node newNode) {
			if(this.next == null){
				this.next = newNode;
			}else{
				this.next.addNode(newNode);
			}
			
		}
		public boolean containsNode(String data) {
			if(data.equals(this.data)){
				return true;
			}else{
				 if(this.next != null){
					return this.next.containsNode(data);
				 }
			}
			return false;
			
		}
		public String getNode(int index) {
			if(Link.this.foot++ == index){
				return this.data;
			}else{//我们之所以可能省略判断this.next部位null
				//在于我们在前面设定了两个判断:1.index小于链表的count,而且index不为负数
				return this.next.getNode(index);
			}
			
		}
		public void setNode(int index,String data) {
			if(index == Link.this.foot++){
				this.data = data;
			}else{
				this.next.setNode(index,data);
			}
		
		}
		public void removeNode(Node previous, String data) {
			if(data.equals(this.data)){
				previous.next = this.next;
			}else {
				this.next.removeNode(this, data);
			}
			
		}
	}
	//**********以上为内部类************
	private Node head;//设置一个根节点
	private int count = 0;//添加一个计数的int变量
	public int foot = 0;//在Link类中创建一个索引的初始值
	public void add(String data){
		Node newNode = new Node(data);//创建一个Node对象
		if(this.head == null){//注:data可以为空数据
			this.head = newNode;
		}else{
			this.head.addNode(newNode);
		}
		this.count++;//每一次添加一个对象,就执行一次
	}
	public void print(){
		if(this.head == null){
			return;
		}else{
			this.head.printNode();
		}
	}
	public int size(){
		return this.count;//返回count的值
		
	}
	public boolean isEmpty(){
		return this.count == 0;
		
	}
	public boolean contains(String data){
		if(this.head == null || data == null){
			return false;
		}else{
			return this.head.containsNode(data);
			
		}
	}
	public String get(int index){//通过索引获取指定的内容
		if(index > this.count || this.head == null || index < 0){
			return null;
			
		}else{
			this.foot = 0;
			return this.head.getNode(index);
			
		}
		
	}
	public void set(int index,String data){
	if(index > this.count || this.head == null || index < 0){
		return;
		
	}else{
		this.foot = 0;
		this.head.setNode(index,data);
		
		}
	
	}
	public void remove(String data){
		if(this.contains(data)){
			if(data.equals(this.head.data)){
				this.head = this.head.next;
			}else{
				this.head.next.removeNode(this.head,data);
			}
			this.count--;
		}
		
	}

}



版权声明:本文为博主原创文章,未经博主允许不得转载。

《腾讯网UED体验设计之旅》

体验设计的热潮又一次从西方波及了中国的设计界,但这一次最为敏感的恰恰是媒体,每当一个新概念在国内传播时,国内的商业界、传媒界乃至学术界都兴奋无比,又一轮获取名利的机遇到来了。试想从花店买来的鲜艳无比的...
  • u013593035
  • u013593035
  • 2015年10月11日 11:12
  • 1004

java链表初步学习

java中的链表和  c/c++  一样,也是一种线性数据结构。和数组的功能有一定的相似,但是两者之间在某些方面还是存在很大的不同,简单的来说不同点有以下几点: 1.在创建数组时,是一次性地开辟一整...
  • liyangxueit
  • liyangxueit
  • 2016年02月20日 12:44
  • 503

入门:链表的基本操作

入门:链表的基本操作标签:C语言 链表By 小威威1.写这篇博文的原因C语言有三大重要部分:流程控制、函数、指针。 对于指针,单单了解它的简单应用是不够的,最重要的还是学习链表。许多参考书对链表的...
  • linwh8
  • linwh8
  • 2015年11月05日 00:15
  • 2457

ActiveX控件的MFC设计之旅-第13步

这一步我们将持久化一个接口,可能有些难度,因为用到了很多前面讲过的东西。在第1步中,我们就实现了一个具有层次结构的控件,但是,我们并没有给这个控件提供持久化,更不用说,持久化控件的所有层次了。在上一步...
  • xiaoqiqixiao
  • xiaoqiqixiao
  • 2006年01月16日 15:29
  • 2396

Java单链表基本操作(一)--顺序查找

本系列博文,将围绕一下几个方面: Java单链表基本操作: (一)顺序查找; (二)指定位置增加节点; (三)删除当前节点; (四)单链表反转; (五)输出倒数第K个节点; (六)删除重...
  • y999666
  • y999666
  • 2016年04月01日 10:58
  • 1823

最简单的一个Java窗体示例!

package cs1;import java.awt.*;public class Frame1 extends Frame{  public Frame1(String title)  {    ...
  • ruanruoshi
  • ruanruoshi
  • 2006年03月17日 11:23
  • 929

Java实现链表结构

按链表的组织形式分有ArrayList和LinkList两种。ArrayList内部其实是用数组的形式实现链表,比较适合链表大小确定或较少对链表进行增删操作的情况,同时对每个链表节点的访问时间都是co...
  • u014640201
  • u014640201
  • 2015年09月09日 15:18
  • 413

Java实战应用视频教程之Java算法分析与设计

实战应用Java算法分析与设计(链表、二叉树、哈夫曼树、图、动态规划、HashTable算法) 适合人群:中级 课时数量:38课时 用到技术:Java算法 涉及项目:案例应用实战 咨询qq:...
  • xiarilove
  • xiarilove
  • 2015年02月09日 17:03
  • 1319

数据结构基础知识(一)——链表

1.  链表 链表作为最基本的数据结构,存储特点:可以用任意一组存储单元来存储单链表中的数据元素(即存储单元可以是不连续的),其中一个结点(数据域,地址域),数据域:数据元素,地址域:链表元素的前驱或...
  • xinyu2015
  • xinyu2015
  • 2016年05月20日 21:10
  • 260

【Java】编写函数,检查链表是否为回文

快行指针找到链表中间结点 1. 反转前半部分看是否和后半部分一样 2. 将前半部分入栈,迭代访问剩下的一半结点,每次的栈顶元素一样则是回文链表 import java.util.Stack; p...
  • michellechouu
  • michellechouu
  • 2015年07月09日 15:38
  • 1083
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java基础之旅-链表的设计
举报原因:
原因补充:

(最多只允许输入30个字)