package com.icss.list;
public class LinkListTest {
int size;//创建元素个数
Note head;//创建一个头部并且给她一个空值
@Override
public String toString() {
return "LinkListTest{" +
"size=" + size +
", head=" + head +
'}';
}
/**
* 获取元素的个数
* @param
*/
public int getSize(){
return size;//返回当前的元素的个数
}
public void add(Object o){//添加元素
Note note=new Note(o);//把添加的元素存在一个新的引用对象中
if (head==null){//判断head是不是没有值
head=note;//没值得情况下 把添加的元素赋值给头部变量
}else {
Note temp=head;//创建一个头部变量
while (temp.getNext()!=null){//判断头部变量的值是不是空
temp=temp.getNext();//查找头部的值的最后一个
}
temp.setNext(note);//把传进来的值添加在引用节点中(新的节点)
}
size++;//长度+1
}
/**
* 根据下标获取元素
* @return
*/
public Object get(int index){
//从头部进行查询
Note temp=head;//创建一个头部对象
for (int i = 0; i <index ; i++) {
temp=temp.getNext();//获取需要的下标的索引的节点引用
}
return temp.getValue();//把拿到的值反回
}
/**
* 根据对应得下标修改对应的值
*/
public void set(int index,Object value){
//创建一个头部对象
Note temp=head;
//循环遍历
for (int i = 0; i <index ; i++) {
temp=temp.getNext();//获取需要的下标的索引的节点引用
}
temp.setValue(value);
}
/**
* 根据索引删除指定的元素
*/
public void delete(int index){
if (index==0){
head=head.getNext();//让头部等于头部的下一个
}else {
Note temp=head;
for (int i = 0; i <index ; i++) {
temp=temp.getNext();//被删除的节点的前一个节点
}
//把被删除的节点的前一个节点和被删除的节点的后一个节点拼接在一起
//把删除后的组成一个新的Note
temp.setNext(temp.getNext().getNext());
}
size--;//长度-1
}
public String deleteAll(){
size=0;//元素的个数为0
head=null;//让头部第一个节点是空
return "删除成功";
}
public static void main(String[] args) {
LinkListTest linkListTest=new LinkListTest();
linkListTest.add("a");
linkListTest.add("b");
linkListTest.add("c");
linkListTest.add("d");
for (int i = 0; i <linkListTest.size ; i++) {
Object o = linkListTest.get(i);
System.out.println(o);
}
System.out.println("==========");
int size = linkListTest.getSize();
System.out.println(size);
System.out.println("==========");
Object o = linkListTest.get(3);
System.out.println(o);
System.out.println("==========");
linkListTest.set(0,"M");
for (int i = 0; i <linkListTest.size ; i++) {
Object obj = linkListTest.get(i);
System.out.println(obj);
}
System.out.println("==========");
linkListTest.delete(0);
for (int i = 0; i <linkListTest.size ; i++) {
Object obj = linkListTest.get(i);
System.out.println(obj);
}
System.out.println("==========");
String string = linkListTest.deleteAll();
System.out.println(string);
}
}
package com.icss.list;
public class Note {
Object value;//数据的存放
Note next;//节点的引用
public Note(Object value) {
this.value = value;
}
public Note(Object value, Note next) {
this.value = value;
this.next = next;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public Note getNext() {
return next;
}
public void setNext(Note next) {
this.next = next;
}
@Override
public String toString() {
return "Note{" +
"value=" + value +
", next=" + next +
'}';
}
}
手写LinkedList原理
最新推荐文章于 2024-08-18 21:36:31 发布