java数据结构与算法-单链表

一、创建单链表

/**
 * Created by Xi on 2017/7/30.
 * 单链表中链结点
 */

public class LinkSingle {
    public int iData;
    public double dData;
    public LinkSingle next;
    public LinkSingle(int id,double dd){
        iData=id;
        dData=dd;
    }

    /**
     * 展示链接点
     */
    public void displayLink(){
        Log.i("LinkSingle","{"+iData+","+dData+"}");
    }

}

/**
 * Created by Xi on 2017/7/30.
 * 单链表
 */

public class LinkListSingle {
    private static final String TAG="LinkListSingle";
    private LinkSingle first;//单链表的第一个元素
    public LinkListSingle(){
        first=null;
    }

    /**
     * 在链表链首插入元素
     * @param id
     * @param dd
     */
    public void insertFirst(int id,double dd){
        LinkSingle newLink=new LinkSingle(id,dd);//创建一个新链接点
        newLink.next=first;//将原先的首连接点排到新链接点后面
        first=newLink;//链表新元首连接点为新插入的链接点
    }

    /**
     * 判断链表是否为空
     */
    public boolean isEmpty(){
        return first==null;
    }

    /**
     * 删除连接点,从链表首删除
     */
    public LinkSingle deleteFirst(){
        LinkSingle temp=first;
        first=first.next;
        return temp;
    }

    /**
     * 查找连结点
     */
    public LinkSingle find(int key){
        LinkSingle current=first;
        while(current.iData!=key){//循环找
            if(current.next==null){//未找到,返回null
                return null;
            }else{
                current=current.next;
            }
        }
        return current;//找到返回
    }

    /**
     * 删除对应的结点
     */
    public LinkSingle delete(int key){
        LinkSingle current=first;
        LinkSingle previous=first;//上一个结点,用于当找到要删除的结点,好将该节点与别删除结点的下一个结点链接。
        while(current.iData!=key){//查找被删除的结点
            if(current.next==null){//未找到要删除的结点返回null
                return null;
            }else{
                previous=current;
                current=current.next;
            }
        }
        if(current==first)first=first.next;//被删除的结点为元首结点
        else previous.next=current.next;
        return current;
    }

    /**
     * 展示链表
     */
    public void displayList(){
        Log.i(TAG,"List (first-->last):");
        LinkSingle current=first;
        while(current!=null){
            current.displayLink();
            current=current.next;
        }
        Log.i(TAG,"");
    }

}


二、调用函数如下

 /**
     * 单链表
     */
    private void link_single() {
        //创建链表,并添加结点。
        LinkListSingle theList = new LinkListSingle();
        theList.insertFirst(11, 1.99);
        theList.insertFirst(22, 2.99);
        theList.insertFirst(33, 3.99);
        theList.insertFirst(44, 4.99);
        theList.insertFirst(55, 5.99);
        theList.displayList();
        //循环删除结点,直到删光
        Log.i(TAG,"Deleted ");
        while (!theList.isEmpty()) {
            LinkSingle aLink = theList.deleteFirst();
            aLink.displayLink();
        }
        //添加结点
        theList.insertFirst(66, 6.99);
        theList.insertFirst(77, 7.99);
        //寻找结点
        LinkSingle linkSingle = theList.find(66);
        if(linkSingle!=null)Log.v(TAG,"Found link with key"+linkSingle.iData);
        else Log.v(TAG,"Can't find Link");
        //删除结点
        LinkSingle delete = theList.delete(66);
        if(delete!=null)Log.v(TAG,"Deleted link with key"+ delete.iData);
        else Log.v(TAG,"Can't delete link");

    }


日志打印如下:

08-14 18:30:56.597 9687-9687/com.tool.wpn.quicksort I/LinkListSingle: List (first-->last):
08-14 18:30:56.597 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {55,5.99}
08-14 18:30:56.598 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {44,4.99}
08-14 18:30:56.598 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {33,3.99}
08-14 18:30:56.598 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {22,2.99}
08-14 18:30:56.598 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {11,1.99}
08-14 18:30:56.598 9687-9687/com.tool.wpn.quicksort I/MainActivity: Deleted 
08-14 18:30:56.599 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {55,5.99}
08-14 18:30:56.600 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {44,4.99}
08-14 18:30:56.600 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {33,3.99}
08-14 18:30:56.600 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {22,2.99}
08-14 18:30:56.600 9687-9687/com.tool.wpn.quicksort I/LinkSingle: {11,1.99}
08-14 18:30:56.600 9687-9687/com.tool.wpn.quicksort V/MainActivity: Found link with key66
08-14 18:30:56.601 9687-9687/com.tool.wpn.quicksort V/MainActivity: Deleted link with key66

源码下载地址:点击打开链接


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值