1、链表主要的方法与变量
LinkList类:
类变量:Node head , int N
构造方法:public LinkList(){};
成员方法:boolean isEmpty();//判空 addNode(T data);//输入数据 remove(T data);//删除数据
search(T data);//查找 show();//输出链表数据 clear();//清空链表
成员变量:T data;//数据 Node next;//结点地址
内部类:class Node{};
2、思路分享
实现的步骤:
(1)、确定类变量:单向链表基本数据字段为两个:一个为记录头节点的Node head;一个是记录结点数的 int N;
(2)、使用构造方法初始化链表:构造方法为public LinkList(){};在构造方法中,初始化结点数N=0;头结点head=new Node(null,null);
(3)、创建成员内部类:内部类定义为:class Node(){}。定义结点的内容,包括存储的数据 privateT data和存储结点地址 private Node next;在内部类中创建成员方法,把输入的数据存储到链表中的数据变量。成员方法为:public Node(T data,Node next){this . data=data;}
其中,T表示的是泛类,不管输入的是整型、浮点型还是字符串都可以被读取并储存。如果需要指定输入的类型,可以把T改为相应的数据类型!
(4)、考虑链表需要实现的功能,包括:增加结点、删除结点、判断链表是否为空、查找结点数据、输出链表……根据xiaxia相应的功能编写不同的方法。以增加节点为例:
先判断头节点是否有数据,没有的话需要先处理头节点:head = new Node(data , null); N++;
如果头节点有数据:增加的原理为先创建一个新的结点,并把新结点的地址赋值给上一个结点的next 变量中,保持链表的连续性。实现代码:
Node newNode=(data,null);//新结点
Node temp=head.next;
while(temp.next!=null){
temp=temp.next;//找出尾结点
}
temp.next=newNode;
N++;
3、代码实现
(源代码的注释均为个人理解与记忆,如有错误,欢迎指正!!!)