输出部分没有写完整,但是函数部分是完整的
过几天会写一个关于输入输出部分的内容,因为看了很多教材都没有提及这一部分,然而各个公司笔试题以及面试题都会提起这个,如果输入输出写不对,算法部分写对了也没用。
package 算法.顺序表;
import java.util.Date;
import java.util.Scanner;
class DATA
{
String key;//节点的关键字
String name;
int age;
}
class SLType{
static int Maxlen=100;//定义顺序表的最大长度
DATA ListData[]=new DATA[Maxlen+1];//保存顺序表的结构数组
int ListLen;//顺序表已存节点的数量
//插入数据
void SLLint(SLType SL)
{
SL.ListLen=0;//初始化顺序表,初始化空表
}
int SLLength(SLType SL)
{
return (SL.ListLen);//int数据类型,返回数据表的长度
}
int SLInsert(SLType SL,int n,DATA data)
{
int i;
if (SL.ListLen>=Maxlen)
{
System.out.println("顺序表已满,不能再插入数据");
return 0;
}
if (n<1||n>SL.ListLen-1)
{
System.out.println("插入节点顺序不正确");
return 0;
}
for (i=SL.ListLen;i>=n;i--)//因为要进行插入数据,所以会让其他的数据向后移位
{
SL.ListData[i+1]=SL.ListData[i];
}
SL.ListData[n]=data;
SL.ListLen++;
return 1;
}
//追加结点
int SLAdd(SLType SL,DATA data)
{
if(SL.ListLen>=Maxlen) {
System.out.println("顺序表已满,不能再插入数据");
return 0;
}
SL.ListData[++SL.ListLen]=data;
return 1;
}
int SLDelete(SLType Sl,int n)
{
int i;
if (n<1||n>Sl.ListLen)
{
System.out.println("删除结点序号错误,不能删除结点");
return 0;
}
for ( i = 0; i <Sl.ListLen ; i++) {
Sl.ListData[i]=Sl.ListData[i+1];
}
Sl.ListLen--;
return 1;
}
//根据数组序号返回数组元素
DATA SLFFindbyNum(SLType Sl, int n)
{
if (n<1||n>Sl.ListLen+1)
{
System.out.println("节点序号错误");
return null;
}
return Sl.ListData[n];
}
//按照关键字进行查找结点
int SlSearch(SLType SL,String key)
{
int i=1;
for ( i = 1; i <SL.ListLen ; i++) {
if (SL.ListData[i].key.compareTo(key)==0)
{
return i;
}
}
return 0;
}
//显示所有结点
int SLShow(SLType SL)
{
for (int i = 1; i <SL.ListLen ; i++) {
System.out.println(SL.ListData[i].key+SL.ListData[i].name+SL.ListData[i].age);
}
return 0;
}
}
public class zhunbeishuju {
public static void main(String[] args) {
int i;
SLType Sl = new SLType();
DATA pdata = new DATA();
String key;
System.out.println("顺序表操作练习");
Sl.SLLint(Sl);//初始化
System.out.println("顺序表初始化完成");
Scanner input = new Scanner(System.in);
do {
System.out.println("请输入添加的数字");
DATA data = new DATA();
data.key = input.next();
data.name = input.next();
data.age = input.nextInt();
if (data.age!=0)
break;
} while (true);
System.out.println("输出数组");
Sl.SLShow(Sl);
}
}
代码比较详细,主要是看前面顺序表这类东西怎么写就行了、