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

来源:互联网 发布:mac下了搜狗输入法 编辑:程序博客网 时间:2024/06/06 02:23

一、创建单链表

/** * 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

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


原创粉丝点击