顺序表java数据结构完全版代码

输出部分没有写完整,但是函数部分是完整的

过几天会写一个关于输入输出部分的内容,因为看了很多教材都没有提及这一部分,然而各个公司笔试题以及面试题都会提起这个,如果输入输出写不对,算法部分写对了也没用。

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);
    }
}

代码比较详细,主要是看前面顺序表这类东西怎么写就行了、

猜你喜欢

转载自blog.csdn.net/gaoweiyuan1996/article/details/82814507