今天我们学习了java的链表数据结构的实现,创建一个Node类,里面定义数据和一个Node类,然后是构造方法传值。
类里面定义4个方法,分别可以获取和设置类的Node类指向和数据。
然后再创建一个MyLinkList类来定义我自己的操作链表数据结构的方法,分别由增删查改的功能。
今天我只是实现了:1.获取链表长度 2.增加数据 3.查找节点 4.插入数据 5.修改数据 。
删除数据我还没有实现。
下面是我的代码:
package 我的链表;
public class MyLinkList {
//建立头结点
private Node head;
public int size(){
if(head == null){
return 0;
}
int size = 1;
Node node = head;
while(node.getNext() != null){
node = node.getNext();
size++;
}
return size;
}
//增加一个节点
public void add(String value){
Node newNode = new Node(value);
//如果头结点为空,直接添加到头结点
if(head == null){
head = newNode;
return ;
}
//否则添加到末尾
Node node = head;
while(node.getNext() != null){
node = node.getNext();
}
node.setNext(newNode);
}
//删除一个节点
public boolean delete(String value){
return false;
}
public boolean delete(int index){
return false;
}
//查找一个节点
public String getValue(int index){
if(index>size()||index<0){
try {
throw new Exception("下标越界");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
int count = 0;
Node node = head;
while(count != index){
node = node.getNext();
count++;
}
return node.getValue();
}
//插入一个节点
public boolean insert(String value,int index){
if(index<0||index>size()){
try {
throw new Exception("输入下标越界");
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
if(size() == 0){
head = new Node(value);
return true;
}else if(index == 0){
Node newNode = new Node(value);
Node node = head;
head = newNode;
head.setNext(node);
return true;
}
Node newNode = new Node(value);
Node node = head;
int count = 0;
while(count!=index-1){
node = node.getNext();
count++;
}
Node nodeNext = node.getNext();
node.setNext(newNode);
newNode.setNext(nodeNext);
return true;
}
//修改一个节点
public boolean update(String value,int index){
if(index>size()||index<0){
try {
throw new Exception("下标越界");
} catch (Exception e) {
e.printStackTrace();
}
}
int count = 0;
Node node = head;
while(count != index){
node = node.getNext();
count++;
}
node.setValue(value);
return true;
}
}这是我操作数据结构的代码。
然后我用数据测试结果如下图:
今天暂时先搞这么多,洗洗睡。