ADT简单链表

没事温习一下简单链表,代码很简单,就不详细说了。
  1
  2 import  java.util.ArrayList;
  3 import  java.util.List;
  4
  5 ExpandedBlockStart.gifContractedBlock.gif /** */ /**
  6 * 链表实现ADT
  7 * @author BruceLeey
  8 */

  9 ExpandedBlockStart.gifContractedBlock.gif class  Node  {
 10
 11    Object obj;  //数值域
 12    Node next; //链域
 13
 14ExpandedSubBlockStart.gifContractedSubBlock.gif    public Node() {
 15    }

 16
 17ExpandedSubBlockStart.gifContractedSubBlock.gif    public Node(Object value) {
 18
 19        this.obj = value;
 20        next = null;
 21    }

 22}

 23
 24 ExpandedBlockStart.gifContractedBlock.gif class  LinkList  {
 25
 26    private Node first;  //头节点,不记录在链表之内
 27    private int size;  //记录链表节点长度
 28
 29ExpandedSubBlockStart.gifContractedSubBlock.gif    public LinkList() {
 30
 31        first = null;
 32        size = 0;
 33
 34    }

 35
 36ExpandedSubBlockStart.gifContractedSubBlock.gif    /** *//**
 37     * 添加节点
 38     *
 39     * @param value
 40     */

 41ExpandedSubBlockStart.gifContractedSubBlock.gif    public void addNode(Object value) {
 42        System.out.println("\n-------------------------添加节点 " + value + " -------------------------");
 43        Node currentNode = new Node(value);
 44        currentNode.next = first; //当前节点链域指向头节点
 45        first = currentNode;        //头节点记录当前节点地址
 46        size++;
 47    }

 48
 49ExpandedSubBlockStart.gifContractedSubBlock.gif    /** *//**
 50     * 验证是否为空
 51     * @return
 52     */

 53ExpandedSubBlockStart.gifContractedSubBlock.gif    public boolean isEmpty() {
 54        return size == 0;
 55    }

 56
 57ExpandedSubBlockStart.gifContractedSubBlock.gif    /** *//**
 58     * 删除表头
 59     * @param value
 60     */

 61ExpandedSubBlockStart.gifContractedSubBlock.gif    public Node removeFirstNode() {
 62        System.out.println("\n-------------------------移除头节点-------------------------");
 63        Node temp = first;
 64        first = first.next;   //指向下一节点
 65        size--;
 66        System.out.println("\n移除的表头数据为: " + temp.obj);
 67        return temp;   //返回删除的节点
 68    }

 69
 70ExpandedSubBlockStart.gifContractedSubBlock.gif    /** *//**
 71     * 封装长度
 72     * @return
 73     */

 74ExpandedSubBlockStart.gifContractedSubBlock.gif    public int getSize() {
 75
 76        return size;
 77    }

 78
 79ExpandedSubBlockStart.gifContractedSubBlock.gif    /** *//**
 80     * 找出索引之前的节点
 81     * @param index
 82     * @return
 83     */

 84ExpandedSubBlockStart.gifContractedSubBlock.gif    public List<Node> getNodeByIndex(int index) {
 85        System.out.println("\n-------------------------查找" + index + "之前的所有节点-------------------------");
 86        List<Node> list = new ArrayList<Node>();
 87        assert (!(index > getSize() - 1 || index < 0));
 88        Node current = first;   //定位到头节点
 89ExpandedSubBlockStart.gifContractedSubBlock.gif        for (int i = 0; i < index; i++{
 90            list.add(current);
 91            current = current.next;   //以此往下移
 92        }

 93ExpandedSubBlockStart.gifContractedSubBlock.gif        for (int j = 0; j < list.size(); j++{
 94            System.out.println("\n查找到的数据为:  " + list.get(j).obj);
 95        }

 96        return list;
 97    }

 98
 99ExpandedSubBlockStart.gifContractedSubBlock.gif    /** *//**
100     * 输出链表
101     */

102ExpandedSubBlockStart.gifContractedSubBlock.gif    public void displayNode() {
103        System.out.println("\n-------------------------开始输出链表-------------------------");
104        assert (!this.isEmpty());
105        Node current = first;
106ExpandedSubBlockStart.gifContractedSubBlock.gif        for (int i = 0; i < getSize(); i++{
107
108            System.out.println("节点为: " + current.obj.toString());
109            current = current.next;
110        }

111
112    }

113}

114
115
116 ExpandedBlockStart.gifContractedBlock.gif public   class  TestAdt  {
117
118ExpandedSubBlockStart.gifContractedSubBlock.gif    public static void main(String[] args) {
119        LinkList link = new LinkList();
120ExpandedSubBlockStart.gifContractedSubBlock.gif        for (int i = 0; i < 10; i++{
121            link.addNode("我是节点 " + i);
122        }

123        link.displayNode();
124        Node node = link.removeFirstNode();
125        link.displayNode();
126        link.getNodeByIndex(5);
127        link.displayNode();
128
129    }

130}

131

转载于:https://www.cnblogs.com/BruceLeey/archive/2009/08/12/1544560.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值