順序表java資料結構完全版程式碼
阿新 • • 發佈:2018-12-11
輸出部分沒有寫完整,但是函式部分是完整的
過幾天會寫一個關於輸入輸出部分的內容,因為看了很多教材都沒有提及這一部分,然而各個公司筆試題以及面試題都會提起這個,如果輸入輸出寫不對,演算法部分寫對了也沒用。
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); } }
程式碼比較詳細,主要是看前面順序表這類東西怎麼寫就行了、