节点定义,成员分析,构造方法和add方法实现
2015-10-22 16:46
295 查看
怎么添加成员呢?
链式结构的节点类型还没有呢。假设是Node。那么LinkList里面需要一个头节点,其他的先不管。
这个Node我可以将它设置为一个内部类。它很简单,所有人都知道。
private
class Node{
private T
data;
private Node
next;
public T
getData() {
return
data;
}
public
void setData(T data) {
this.data =
data;
}
public Node
getNext() {
return
next;
}
public
void setNext(Node next) {
this.next =
next;
}
}
既然Node类型有了,那么就该认真的考虑这个类需要什么成员了,看看有什么方法吧?
1:构造方法,初始化一个链式的结构就行啦,所有人都知道了。头结点不是有效的数据节点。不保存数据。这个方法,很明显需要一个Node成员,同时为表明容器中对象的数量,还要size。所以,前2个成员就是
private Node
head;
private
int size;
构造方法:
public LinkedList(){
head = new Node();
size = 0;
head.data =
null;
head.next =
null;
}类似于这样的结构:
![](http://img.blog.csdn.net/20151022164504929?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2:add方法。无需其他的成员啊。
边编程边分析
@Override
public
void add(T obj) {
Node added = new Node();
added.setData(obj);
added.setNext(null);
//设置一个游标,游动到列表的最后一个元素
Node curr =
head;
while(curr.next !=
null)
curr =
curr.next;
//把added加到最后元素的后面
curr.next =
added;
size++;
}
链式结构的节点类型还没有呢。假设是Node。那么LinkList里面需要一个头节点,其他的先不管。
这个Node我可以将它设置为一个内部类。它很简单,所有人都知道。
private
class Node{
private T
data;
private Node
next;
public T
getData() {
return
data;
}
public
void setData(T data) {
this.data =
data;
}
public Node
getNext() {
return
next;
}
public
void setNext(Node next) {
this.next =
next;
}
}
既然Node类型有了,那么就该认真的考虑这个类需要什么成员了,看看有什么方法吧?
1:构造方法,初始化一个链式的结构就行啦,所有人都知道了。头结点不是有效的数据节点。不保存数据。这个方法,很明显需要一个Node成员,同时为表明容器中对象的数量,还要size。所以,前2个成员就是
private Node
head;
private
int size;
构造方法:
public LinkedList(){
head = new Node();
size = 0;
head.data =
null;
head.next =
null;
}类似于这样的结构:
2:add方法。无需其他的成员啊。
边编程边分析
@Override
public
void add(T obj) {
Node added = new Node();
added.setData(obj);
added.setNext(null);
//设置一个游标,游动到列表的最后一个元素
Node curr =
head;
while(curr.next !=
null)
curr =
curr.next;
//把added加到最后元素的后面
curr.next =
added;
size++;
}
相关文章推荐
- 最大子段和问题
- ios开发系列-准备工作
- git本地创建目录提交远程仓库流程
- 2种实现CXF方法例子
- C++ string 的基本操作(不断更新中)
- 【VBA研究】取整函数的使用
- vb.net 2012 使用prodave6.2
- Win10系统怎么设置开机登录时不显示欢迎使用 Windows10登录时跳过欢迎屏幕的设置方法
- java入门第九天 方法的调用
- Qt enum使用总结
- 软件版本控制介绍
- Log4j.properties配置详解
- 电商52个专业名词解释大汇总
- 刻度ticks和时间戳
- 如何修改电脑磁盘盘符
- symfony安装使用
- 最小生成树
- IIS7.5 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面
- Sphinx全文检索 (一)
- 约瑟夫环O(N)和O(M*N)算法详解