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
源码下载地址:点击打开链接
- java数据结构与算法-单链表
- java数据结构与算法
- Java数据结构与算法
- 《JAVA数据结构与算法》
- java 数据结构与算法
- Java数据结构与算法
- java 数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- Java数据结构与算法
- 2-3 Sass的函数功能-列表函数
- Android Studio-Memory Monitor
- 2-4 Sass的函数功能-颜色函数
- 2-5 Sass 的 @ 规则
- React Native之React速学教程(上)
- java数据结构与算法-单链表
- React Native之React速学教程(中)
- React Native之React速学教程(下)
- Linux下安装MongoDB
- NLTK学习之二:建构词性标注器
- PHP 设置调试工具XDebug PHPStorm IDE
- WebPack 简单使用
- HADOOP背景介绍
- JS调用Andrioid方法传递参数,Android需要知道的一个注意点