什么叫做链表?
是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
相比较顺序结构,链表比较方便插入和删除操作。
java实现链表的例子:
1创建一个节点类
package Link;
public class Node {
private String Name;
private Node next;
public String getName() {
return Name;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Node(String Name){
this.Name=Name;
}
public boolean hasNext(){
boolean is =false;
if(this.next!=null){
is =true;
}
return is ;
}
}
2创建一个链表类//
package Link;
public class Link {
private Node head;
public Link(Node head)
{
this.head=head;
}
public void addNode(Node node){
Node p=head;
while(true){
if(!p.hasNext()){
p.setNext(node);
break;
}
p=p.getNext();
}
}
public boolean delLastNode(){
Node p=head;
if(!p.hasNext()){
System.out.println("此表为空!");
return false;
}
while(p.getNext().getNext()!=null){
p=p.getNext();
}
System.out.println("/n" +p.getName()+ " 看见了 "+p.getNext().getName()+ " 啊呜一口,吃掉了:-()");
p.setNext(null);
return true;
}
public void display(){
Node p=head.getNext();
while(p!=null){
System.out.println(p.getName());
p=p.getNext();
}
}
}
3 测试类~~~~~~~~~~~~~~~``
package Link;
public class EatFish {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Node head = new Node("吸血鬼!");
Link link = new Link(head);
link.addNode(new Node("人"));
link.addNode(new Node("大鱼"));
link.addNode(new Node("小鱼"));
link.addNode(new Node("小虾"));
link.addNode(new Node("紫泥"));
Node p = head;
System.out.println("这是一条食物链!!");
while (head.hasNext()) {
link.delLastNode();
}
}
}