使用Java实现顺序表(数据结构入门)
最近在学数据结构,但是学校要求的是用c语言来写,我之前c语言学的不好,只是会一点点Java。所以恶补了几天的c慢慢的有了自己的思路。昨天晚上睡觉的时候突然有个想法:能不能用Java写一下顺序表的实现呢。说干就干,早上一起床就打开电脑敲起了代码。
什么是顺序表
顺序表是指用一组地址连续的存储单元依次存储各个元素, 使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表。
然后代码如下(第一次写有点紧张qaq):
初始化顺序表
private int len
;
private int []list
;
public Initseqlist(int max
) {
this.list
= new int[max
];
this.len
= 0;
}
清空顺序表
public void clearSeqlist() {
this.len
=0;
}
这个清空很简单让这个长度等于0就行了。
检测顺序表是否为空
public boolean seqlistEmpt() {
if (this.len
!=0) {
System
.out
.println("顺序表有值哦,亲");
return false;
}else {
System
.out
.println("顺序表为空哦,亲");
return true;
}
}
返回顺序表的元素个数
public int listLen() {
System
.out
.println(this.len
);
return this.len
;
}
返回顺序表中指定位置元素的值
public int[] getElem(int size
) {
int [] ret
= new int[1];
if (len
==0) {
System
.err
.println("数组为空");
}else {
ret
[0] = this.list
[size
-1];
}
return ret
;
}
返回顺序表中第一个与指定值相同的元素的位置
public int locateElem(int value
) {
for (int i
= 0; i
< list
.length
; i
++) {
if (this.list
[i
]==value
) {
return i
+1;
}
}
return 0;
}
返回指定元素的直接前驱
public int [] priorElem(int value
) {
int [] ret
= new int[1];
if (len
==0) {
System
.out
.println("顺序表为空");
}else {
for (int i
= 0; i
< ret
.length
; i
++) {
if (this.list
[i
]==0) {
System
.out
.println("没有前驱");
}else {
if (this.list
[i
]==value
) {
ret
[0]=this.list
[i
-1];
}
}
}
}
return ret
;
}
返回指定元素的直接后继
public int[] nextElem(int value
) {
int [] ret
= new int[1];
for (int i
= 0; i
< ret
.length
; i
++) {
if (this.list
[i
]==ret
.length
) {
System
.out
.println("没有后继哦,亲");
}
else if (this.len
==0) {
System
.out
.println("亲,你的顺序表为空哦");
}
else {
ret
[0] = this.list
[i
+1];
}
}
return ret
;
}
向指定位置插入元素
public int listInsert(int size
,int value
) {
if (size
<1||size
>this.len
) {
System
.out
.println("插入位置有问题哦,亲");
}
else if (this.len
==this.list
.length
) {
System
.out
.println("顺序表满了哦");
}
for (int i
= this.len
-1; i
>size
-1; i
--) {
this.list
[i
+1]=this.list
[i
];
}
this.list
[size
-1]=value
;
this.len
++;
return 0;
}
删除指定位置的元素
public boolean listDelete(int size
) {
if (this.len
==0) {
System
.out
.println("顺序表不存在");
}else if (size
==this.len
) {
this.len
--;
return true;
}else {
for (int i
= 0; i
< list
.length
; i
++) {
this.list
[i
]=this.list
[i
+1];
}
this.len
--;
}
return true;
}
遍历顺序表
public String
traverseList() {
String string
="";
for (int i
= 0; i
< list
.length
; i
++) {
string
+=this.list
[i
]+"、";
}
if (string
.length()==0) {
return string
;
}
return string
.substring(0,string
.length()-1);
}
这里实现了顺序表的一些简单的操作比如:遍历,删除之类的简单的功能。我不是什么大牛,我只是一个正在不断学习的小白,一名大三狗。希望看见我这文章的大佬们嘴下留情,我知道我写的不好,优化的不足。不喜勿喷,不喜勿喷。