链表的总结
第一:链表是和队列有些相同,都是方便查找数据的。但是链表没有一个索引,在创建链表的时候我们的思想是:首先我们有一个类,但是这个仅仅是一个类,我们需要一连串的,于是我们就需要用这个类来生成对象,不断的向下生成。但是链表里必须存在着数据,我们得得到数据。private Object userNode;
?private LinkNode child;
?private LinkNode parent;
?
?public? LinkNode(Object userNode){
??this.userNode=userNode;
?}
?public Object getUserNode() {
??return userNode;
?}
?public void setUserNode(Object userNode) {
??this.userNode = userNode;
?}
?public LinkNode getChild() {
??return child;
?}
?public void setChild(LinkNode child) {
??this.child = child;
?}
?public LinkNode getParent() {
??return parent;
?}
?public void setParent(LinkNode parent) {
??this.parent = parent;
?}
?其实我们大可不必要去这样,我们也可以将私有的设置为共有的就可以啊。这样我们就可以生成很多相同的类,由上到下生成的一个链表。每一个节点有父节点,子节点,每一个节点都有自己的数据,这是生成链表的思想。
第二:当我们生成链表时我们就存在几个问题:怎样向链表里添加新的,怎样删除指定位置的链表这里的关键问题是我们怎样得到当前的节点:
LinkNode node = front;
???while (num != index) {
????node = node.getChild();
????num++;//不断取出比较撒
???}这个关键是:我们由上到下一直取到当前的节点,
1:向指定位置添加节点:(1)取到当前的节点,设置一个新的节点,在取出父节点,子节点,
?????????????????????????????????? (2)设置新的引用关系:新的节点的父节点为原来的父节点,原来父节点的子节点为新的节点,原来的节点父节点为新节点,原来的子节点不变。
事例代码:
???LinkNode newnode = new LinkNode(obj);
???// 得到当前索引位置的节点
???LinkNode node = this.getLinkNode(index)
? LinkNode fNode = node.getParent();
????// 设置新的引用关系
????fNode.setChild(newnode);
????newnode.setParent(fNode);
????newnode.setChild(node);
??? node.setParent(newnode);
如此我们就插入了新的节点,至于删除节点则是相同的思路;