数据结构(java版)学习笔记(二)——线性表之顺序表
2023-02-18 16:40:25 时间
顺序表的优点:
- 随机存取元素方便,根据定位公式容易确定表中每个元素的存储位置,所以要指定第i个结点很方便
- 简单,直观
顺序表的缺点:
- 插入和删除结点困难
- 扩展不灵活,难以确定分配的空间
- 容易造成浪费
顺序表的实现:
这里我简单说一下吧,Sqlist类实现了ListIntf接口,也就是我们上一节中所提到的接口,之后eclipse中就会提示我们复写ListIntf中的方法,我们根据顺序表的特点,逐一复写即可
详情看注释吧~
PS:所有的参数i都是序号,从1开始
import java.util.Scanner; public class SqList implements ListIntf{ final int maxlen = 1000; //线性表中可容纳最多数据元素数目 String v[] = new String[maxlen]; int len =0;//len是长度,1开始,是位序号 /** * * @return 返回线性表中可容纳最多数据元素数目 */ int getmaxlen(){ return maxlen; } public SqList(){ //构造方法中实现相关的接收数据操作 Scanner sc = new Scanner(System.in); int n; String[] a = new String[maxlen]; System.out.println("请输入需要的数据个数:"); n=sc.nextInt(); sc.close(); for(int i=0;i<n;i++){ a[i] = "a"+i;//a[0]的数值是 a0,a[1]的数值是a1,以此类推…… } setData(a); } /** * 将String数组a赋值给String数组v * @param String数组 */ public void setData(String[] a){ v = a; } @Override public int size() { return len; } @Override public void clear() { v = new String[maxlen]; } @Override public boolean isEmpty() { return len==0; } @Override public String get(int i) { return v[i-1]; } @Override public int indexOf(String s) { int i; for(i=0;i<len;i++){ if(v[i].equals(s)){ return i+1; } } System.out.println("顺序表中不存在该元素!!"); return 0; } @Override public String getPre(String s) { //当前是顺序表,是顺序存储结构,无需实现此方法 return null; } @Override public String getNext(String s) { //当前是顺序表,是顺序存储结构,无需实现此方法 return null; } @Override public void insertElementAt(String s, int i) { //首先判断顺序表是否已满,其次判断i是否合法,之后再进行插入操作 if(len==maxlen){ System.out.println("顺序表已满!"); return;//结束判断,跳出判断语句 }else{ if(i<1||i>len){ System.out.println("输入的序号不合法!"); return; }else{ for(int j=len-1;j>=i-1;j--){ v[j+1]=v[j]; } v[i-1] =s; len++; return; } } } @Override public String remove(int i) {
String string; if(i<1||i>len){ System.out.println("输入序号不合法!"); return null; }else{ string = v[i-1]; for(int j=i-1;j<len;j++){ v[j-1] = v[j]; } len--; return string; } } @Override public String remove(String s) { // TODO Auto-generated method stub String string; for(int i=0;i<len;i++){ if(v[i].equals(s)){ string = v[i]; remove(i+1);//这里的i是索引(下标),索引(下标)加1成为序号 return string; } } System.err.println("当前顺序表中没有该元素"); return null; } }
相关文章
- iPad 建模 | 三维形象创意指南
- 万千星辉,百般精彩!斗罗大陆创意设计大赛获奖作品展示!
- 腾讯云 CODING 首批加入信通院云上软件工程社区汽车云工作组,加速车企软件质量效能双重变革
- 2022-12-24:给定一个字符串s,其中都是英文小写字母, 如果s中的子串含有的每种字符都是偶数个, 那么这样的子串就是达标子串,子串要求是连续串。 返回s
- RTSP、RTMP播放器拉到的视频图像角度不对怎么办?
- 掌握 Jetpack Compose 中的 State,看这篇就够了
- RouterOS 使用CloudFlare动态更新 DDNS脚本
- postimages
- vue重置data
- SpringBoot Security密码加盐
- Spring中@Conditional通过条件来控制bean的注册
- 代码挑战画 魔法圣诞树
- AiFlow大数据框架应用简介
- SAP UI5 里 FlexBox 的使用方法
- SAP UI5 加载本地并不存在的 PDF 文件的错误处理
- SAP Product Lifecycle Costing 里的 Costing Sheet 成本核算表
- SAP ERP 里的 Costing Sheet 成本核算表
- SAP UI5 Smart control 的 Page Variant Management
- SAP UI5 Smart Chart 功能介绍
- 世界杯已开赛,哪些看球设备让你觉得身临其境?