C&C++是那么难学,以至于我连指针是什么都不知道。所以只能学习java了。

如今想用java实现N年前学过“数据结构(c语言版)”却又是那么吃力!

慢慢练吧!

写此博客,仅标记自己学过数据结构。以《数据结构(C语言版)》-严蔚敏 书本为参考。

顺序链表的java类文件:SequenceList.java文件

package list;

public class SequenceList {
private int LIST_INIT_SIZE = 5;//链表的原始大小
private int INCREMENT =1;//链表的增量大小
private Object []SqList = null;//链表
private int curIndex=0;//当前位置
/**
* 初始化链表
* */
public void initList()
{
SqList = new Object[LIST_INIT_SIZE];
}
/**
* 向链表中插入元素
* */
public void insertList(Object o)
{
if(curIndex>LIST_INIT_SIZE-1)//判断当前链表是否已经满
{
//从新为链表分配空间
System.out.println("从新分配空间");
LIST_INIT_SIZE+=INCREMENT;
Object []temp = new Object[LIST_INIT_SIZE];
for(int i=0;i<curIndex;i++)
{
temp[i]=SqList[i];
}
SqList=null;
SqList=temp;
}
//链表中如果不让其包含重复元素,则加入这段代码
/*
if(isContain(o))
{
System.out.println("链表中已包含此元素"+o);
}else
{ }
*/
SqList[curIndex++]= o;
}
/**
* 判断链表中是否包含某元素
* */
Boolean isContain(Object o)
{
for(int i=0;i<curIndex;i++)
{
if(SqList[i].equals(o))
{
return true;
}
}
return false;
}
/**
* 删除链表中的某元素
*
* 如果包含重复元素都删除
* */
public void delete(Object o)
{
for(int i=0;i<curIndex;i++)
{
if(SqList[i].equals(o))
{
for(int j=i;j<curIndex-1;j++)
{
SqList[j]=SqList[j+1];
}
curIndex--;
continue;
}
if(i==curIndex-1)
{
System.out.println("不存在此元素"+o);
}
}
} /**
* 获取链表中的某个元素
* */
public Object getElement(int i)
{
if (i <= 0 || i > curIndex)
{
System.out.println("获取位置超出了链表中元素个数"+curIndex);
}
return SqList[i-1];
}
/**
* 打印链表
* */
public void print()
{
for(int i=0;i<curIndex;i++)
{
System.out.print(SqList[i]+"\t");
}
System.out.println();
} }

  Main函数测试类

package list;

public class SequenceListMain {

	public static void main(String[] args) {
SequenceList sqList = new SequenceList();
sqList.initList();
sqList.insertList(1);
sqList.insertList(2);
sqList.insertList(3);
sqList.insertList(4);
sqList.insertList(5);
sqList.insertList(6);
sqList.delete(5);
sqList.delete(9);
sqList.insertList(1);
sqList.print(); sqList.delete(1);
sqList.print(); System.out.println("第2个元素是:"+sqList.getElement(1));
System.out.println("第4个元素是:"+sqList.getElement(4)); } }

  

java实现顺序链表的更多相关文章

  1. java实现顺序表、链表、栈 (x)->{持续更新}

    1.java实现节点 /** * 节点 * @luminous-xin * @param <T> */ public class Node<T> { T data; Node& ...

  2. java实现单链表的增删功能

    JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static vo ...

  3. JAVA数据结构之链表

    JAVA数据结构之链表 什么是链表呢? 链表作为最基本的数据结构之一,定义如下: 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 简单来说呢,链 ...

  4. JAVA数据结构——单链表

    链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...

  5. Java实现单链表的各种操作

    Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素   4.实现链表的反转   5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...

  6. Java初始化顺序

    package com.helei.init; class Log { public static String fatherStaticString(){System.out.println(&qu ...

  7. [转]Java初始化顺序总结 - 静态变量、静态代码块、成员变量、构造函数

    Java初始化顺序1在new B一个实例时首先要进行类的装载.(类只有在使用New调用创建的时候才会被java类装载器装入)2,在装载类时,先装载父类A,再装载子类B3,装载父类A后,完成静态动作(包 ...

  8. java算法01 - 链表

    1.链表 在Java中实现链表,每个节点都有一个值,然后把它链接到下一个节点.下面来看一下节点的实现 class Node<E> { private E e; private Node&l ...

  9. JAVA按顺序播放多个wav音频

    用Java按顺序播放多个音频部件,不是同时播放.代码如下: List<String> files = new ArrayList<String>(); files.add(&q ...

随机推荐

  1. iOS 9音频应用播放音频之第一个ios9音频实例2

    iOS 9音频应用播放音频之第一个ios9音频实例2 ios9音频应用关联 iOS9音频应用中对于在主视图上添加的视图或控件,在使用它们时必须要与插座变量进行关联.ios9插座变量其实就是为主视图中的 ...

  2. 【BZOJ 2298】 2298: [HAOI2011]problem a (DP)

    2298: [HAOI2011]problem a Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1326  Solved: 637 Descript ...

  3. 「APIO2018选圆圈」

    「APIO2018选圆圈」 题目描述 在平面上,有 \(n\) 个圆,记为 \(c_1, c_2, \ldots, c_n\) .我们尝试对这些圆运行这个算法: 找到这些圆中半径最大的.如果有多个半径 ...

  4. hdu 4790 Just Random

    思路:对于a<=x<=b,c<=y<=d,满足条件的结果为ans=f(b,d)-f(b,c-1)-f(a-1,d)+f(a-1,c-1). 而函数f(a,b)是计算0<= ...

  5. servlet3.0 @WebServlet注解无效的情况

    web.xml文件中的metadata-comcomplete属性的作用: 该属性指定当前的部署描述文件是否是完全的.如果设置为true,则容器在部署时只依赖部署描述文件,忽略所有的注解(同时也会跳过 ...

  6. SpringBoot 部署 docker 打包镜像

    SpringBoot 部署 docker 打包镜像 环境: 1.代码编写工具:IDEA 2.打包:maven 3.docker 4.linux 7.JDK1.8 8.Xshell 9.Xftp 第一步 ...

  7. ngxin error日志

    日志模块ngx_errlog_module对于支持可变参数平台提供的三个接口 #define ngx_log_error(level, log, ...) \ if ((log)->log_le ...

  8. UESTC 2015dp专题 N 导弹拦截 dp

    导弹拦截 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descrip ...

  9. Redis-Linux安装

    简介 redis是一个开源项目,一种基于hash存储于内存的nosql数据库.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的value类型相对更多,包括string. ...

  10. Android 应用程序的图标 (Icon) 应该设计成多大?

    应用程序图标 (Icon)应当是一个 Alpha 通道透明的32位 PNG 图片.由于安卓设备众多,一个应用程序图标需要设计几种不同大小,如:LDPI (Low Density Screen,120 ...