C&C++是那么難學,以至於我連指針是什么都不知道。所以只能學習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));
}
}
