1. 程式人生 > >順序表java資料結構完全版程式碼

順序表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);
    }
}

程式碼比較詳細,主要是看前面順序表這類東西怎麼寫就行了、