C&C++是那麼難學,以致於我連指針是什麼都不知道。因此只能學習java了。java
現在想用java實現N年前學過「數據結構(c語言版)」卻又是那麼吃力!數據結構
慢慢練吧!函數
寫此博客,僅標記本身學過數據結構。以《數據結構(C語言版)》-嚴蔚敏 書本爲參考。學習
順序鏈表的java類文件:SequenceList.java文件測試
package list; public class SequenceList { private int LIST_INIT_SIZE = 5;//鏈表的原始大小 private int INCREMENT =1;//鏈表的增量大小 private Object []SqList = null;//鏈表 private int curIndex=0;//當前位置 /** * 初始化鏈表 * */ public void initList() { SqList = new Object[LIST_INIT_SIZE]; } /** * 向鏈表中插入元素 * */ public void insertList(Object o) { if(curIndex>LIST_INIT_SIZE-1)//判斷當前鏈表是否已經滿 { //重新爲鏈表分配空間 System.out.println("重新分配空間"); LIST_INIT_SIZE+=INCREMENT; Object []temp = new Object[LIST_INIT_SIZE]; for(int i=0;i<curIndex;i++) { temp[i]=SqList[i]; } SqList=null; SqList=temp; } //鏈表中若是不讓其包含重複元素,則加入這段代碼 /* if(isContain(o)) { System.out.println("鏈表中已包含此元素"+o); }else { } */ SqList[curIndex++]= o; } /** * 判斷鏈表中是否包含某元素 * */ Boolean isContain(Object o) { for(int i=0;i<curIndex;i++) { if(SqList[i].equals(o)) { return true; } } return false; } /** * 刪除鏈表中的某元素 * * 若是包含重複元素都刪除 * */ public void delete(Object o) { for(int i=0;i<curIndex;i++) { if(SqList[i].equals(o)) { for(int j=i;j<curIndex-1;j++) { SqList[j]=SqList[j+1]; } curIndex--; continue; } if(i==curIndex-1) { System.out.println("不存在此元素"+o); } } } /** * 獲取鏈表中的某個元素 * */ public Object getElement(int i) { if (i <= 0 || i > curIndex) { System.out.println("獲取位置超出了鏈表中元素個數"+curIndex); } return SqList[i-1]; } /** * 打印鏈表 * */ public void print() { for(int i=0;i<curIndex;i++) { System.out.print(SqList[i]+"\t"); } System.out.println(); } }
Main函數測試類指針
package list; public class SequenceListMain { public static void main(String[] args) { SequenceList sqList = new SequenceList(); sqList.initList(); sqList.insertList(1); sqList.insertList(2); sqList.insertList(3); sqList.insertList(4); sqList.insertList(5); sqList.insertList(6); sqList.delete(5); sqList.delete(9); sqList.insertList(1); sqList.print(); sqList.delete(1); sqList.print(); System.out.println("第2個元素是:"+sqList.getElement(1)); System.out.println("第4個元素是:"+sqList.getElement(4)); } }