@[TOC](Java 数据结构-循序表)
数据结构 复习记录
初次编写博客,希望以后也能养成这种习惯,话不多说,下面来介绍一下循序表是什么。
循序表介绍
循序表
就是按照循序存储
方式存储的线性表
该线性表结点按照逻辑次序
依次放置在计算机的一组连续的存储单元当中
话不多说,直接上图
我们可以直接看出,其实顺序存储结构就是我们平常使用到的数组
接下来我会用代码来演示如何实现顺序存储
使用Java实现循序表结构
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
package arraylist;
import java.util.Map;
/**
* 顺序表简单实现
* Created by Sheldon on 2019/3/29.
* Project Name: alstudy.
* Package Name: arraylist.
*/
// 数据对象
class Data{
String key;
String name;
Data(String key, String name){
this.key = key;
this.name = name;
}
}
// 循序表
public class ArrList {
// 默认最大长度
int Max = 100;
// 对象数组
Data[] ListData = new Data[Max];
// 当前长度
int ListSize;
// 链表初始化
ArrList(){
ListSize = 0;
}
// 获取顺序表大小
public int linkSize(){
return ListSize;
}
// 链表容量检测 true(满了) false(没满)
public boolean isFull(ArrList list){
if (list.ListSize >= list.Max){
return true;
}else {
return false;
}
}
// 追加结点
public boolean addNode(ArrList list, Data data){
// 检测链表容量
if (isFull(list)){
return false;
}
// 在数据尾部插入
list.ListData[list.ListSize++] = data;
return true;
}
// 插入结点
public boolean insertNode(ArrList list, int index, Data data){
// 检测链表容量
if (isFull(list)){
return false;
}
// 查看下标是否越界
if (index<0 || index>=list.ListSize){
return false;
}
// 条件达成,则在对应位置插入数据
list.ListData[index] = data;
return true;
}
// 删除结点
public boolean delNode(ArrList list, int index){
// 查询结点是否越界
if (index<0 || index>=list.ListSize){
return false;
}
// 删除对应结点,数据向前位移
for (int i=index; i < list.ListSize; i++){
list.ListData[i] = list.ListData[i+1];
}
list.ListSize--;
return true;
}
// 查找结点
public void findNode(ArrList list, int index){
// 查询结点是否越界
if (index<0 || index>=list.ListSize){
System.out.println("下标越界");
}
// 打印出数据
System.out.println("key:"+list.ListData[index].key+" name:"+list.ListData[index].name+"\n");
}
// 显示所有结点
public void findAllNode(ArrList list){
for (int i=0; i<list.ListSize; i++){
System.out.println("key:"+list.ListData[i].key+" name:"+list.ListData[i].name);
}
}
// 测试代码
public static void main(String[] args) {
// 创建循序表数组对象
ArrList list = new ArrList();
// 添加结点
list.addNode(list, new Data("1","小明"));
list.addNode(list, new Data("2","小红"));
list.addNode(list, new Data("3","小兵"));
// 查询结点数量
System.out.println(list.linkSize());
// 打印单个结点
list.findNode(list, 1);
// 打印出所有结点
list.findAllNode(list);
// 删除结点
list.delNode(list, 1);
// 获取结点数量
System.out.println(list.linkSize());
// 打印所有结点
list.findAllNode(list);
// 修改其中一个结点
list.insertNode(list, 0, new Data("1","小红"));
// 再次打印查看
list.findAllNode(list);
}
}
运行结果:
在这里插入图片描述
网友评论