每周总结6
java没有指针,如何实现链表。
怎么做呢。
先自己思考再加查找吧。
链表,就定义一个结构体java中是类。
类是引用类型的数据结构,类似于结构体。
然后创建对象就像是创建数组。
java中是有对象数组的。
public class Student{
// balabala;
}
Student s = new Student();//调用无参构造构造一个新的对象s;
Student[] S = new Student[5];
for(int i=0;i<=4;i++)//一定要注意数组越界之类的情况。
{
}
但是
这不就不是链表了吗。
链表本来就是为了实现解决数组长度一定的浪费内存难修改的问题而创立的。
而且可能要链接不同的内容。
那如何实现不同类之间的链接?
先看源码和帮助文档。
自己写一个LinkedList类//(果然是驼峰命名法。)
然后实现连接。用什么连接?
c中用指针可以标示地址查找。
java中类似的功能好像只有引用类型this。
public class Test{
public void main(String[] args){
}
}
@是重写了方法的意思吧
不仅要写一个Linkedlist类,还要实现里面的方法。
java的面向对象设计,直接写一个类去模拟节点,模拟链表,把链表当做对象去创建。
当做一种类,Everthing is a Object.万物皆是对象。
对哦,链表本来就是通过结构体实现的。
先写节点。
节点类,链表类和方法?都有节点了要什么链表。。。。那链表就放方法吧
然后再加Test类。
节点。
前节点地址
和内容
下一个节点的地址。
地址怎么实现?
访问权限修饰符
public > protected > default (默认的,一般不写) > private;
公开的 受保护的 默认的 私有的;
包含写在一起算了。
//链表节点
class Node{
protected Node next;//受到保护的,同包和子类父类中使用,创建了一个 下一个节点
//引用类型,相当于指针。
//就把此处的引用类型当做指针就行。
protected int data;//这是数据内容
public Node() {}
}
//创建一个链表的类
class ListNode{
int val; //数值 data
ListNode next; // 结点 node//初始值直接默认为空
ListNode(int x){ //可以定义一个有参构造方法,也可以定义一个无参构造方法
val = x;
}
// 添加新的结点
public void add(int newval) {
ListNode newNode = new ListNode(newval);//用有参构造,构造一个新对象
if(this.next == null)
this.next = newNode;//如果他是空指针,则指向下一个。
else
this.next.add(newval);//如果有指针,则再造一个。。。。检索尾接法
}
// 打印链表
public void print() {
System.out.print(this.val);
if(this.next != null)
{
System.out.print("-->");
this.next.print();
}
}
}
头接法和尾接法是节点的插入。头接插在头后面一个。尾接法接在尾巴后面。