java实现顺序链表
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)); } }