跟小刀学习 java 数据结构 单向链表
2017-04-26 10:26
417 查看
这次我写java数据结构的单向链表,
转载:请注明出处
什么是单向链表呢?从字面的意思来说它是有方向的,只有一个方向,链表这种数据结构,表示它是一种链式的存储结构,它在物理内存中不是连续的,而是通过一个一个的指针指向下一个节点,最后一个元素的next指针域指向NULL,即为空,它表示链表的末尾元素,链表的第一个元素称为“头”元素。
单向链表的添加时是从头结点开始添加
单向链表的删除也是从头结点开始删除,当然也可以删除想删除的数据
单向链表的 查询是,是从头结点开始查询,如果不是就找下一个节点.一直到找到为止
所以可以这个总结,单向链接的添加和删除比较快,但是在查询上效率比较低,好了废话不多说直接上代码
有俩个测试类我也献上代码
public class TestLinkList {
}
public static void main(String[] args) {
LinkList linkList = new LinkList();
linkList.insertFirst(88, 0.89);
linkList.insertFirst(23, 0.12);
linkList.insertFirst(34, 0.23);
linkList.insertFirst(17, 0.77);
linkList.insertFirst(33, 0.45);
linkList.displayList();
“`
上述就是单向链表的java实现.如果有不对的地方,我们可以多多交流
—小刀
转载:请注明出处
什么是单向链表呢?从字面的意思来说它是有方向的,只有一个方向,链表这种数据结构,表示它是一种链式的存储结构,它在物理内存中不是连续的,而是通过一个一个的指针指向下一个节点,最后一个元素的next指针域指向NULL,即为空,它表示链表的末尾元素,链表的第一个元素称为“头”元素。
单向链表的添加时是从头结点开始添加
单向链表的删除也是从头结点开始删除,当然也可以删除想删除的数据
单向链表的 查询是,是从头结点开始查询,如果不是就找下一个节点.一直到找到为止
所以可以这个总结,单向链接的添加和删除比较快,但是在查询上效率比较低,好了废话不多说直接上代码
先一写一个节点类 public class Link { public int iData; public double dData; public Link(int id, double dd) { this.iData =id; this.dData =dd; } public Link next;//指向下一个 public void display(){ System.out.print("["+iData+","+dData+"] "); } }
这里写链表 public class LinkList { private Link first; public LinkList() { this.first = null; } /** * 添加第一个元素,从头结点开始添加 * @param id * @param dd */ public void insertFirst(int id,double dd){ Link newLink = new Link(id,dd);//创建一个link实例 newLink.next=first;// 新的节点的next 指向原来的第一个节点 first = newLink;//第一个节点变成新添加的 } public Link find(int key){ Link current = first; while(current.iData !=key){//如果当前的idata不等于这个key 就继续找。 if(current.next !=null){//下一个不等于空 那就把下一个变成当前的 current=current.next; }else return null; } return current; } /** * 删除 一个元素 * @param key * @return */ public Link delete(int key){ Link current = first; Link previous = first; while(current.iData != key){ if(current.next == null) return null;//下一个为空,返回null else //这里比较绕口。就是说。下一个不为空 就当前的变成前一个,当前的下一个节点变成前一个 previous = current; current = current.next; } //如果要删的找个元素就是第一个的话 if(current == first){ first = first.next; }else{ //如果要删除的元素不是第一个的话就把前一个的指针指向当前的指针指向的那个 1--2--3 //就是1指向3 previous.next=current.next; } return current; } /** * 从第一个节点开始删除 * @return */ public Link deleteFirst(){ Link temp =first; first=first.next; return temp; } public boolean isEmpty(){ return first == null; } public void displayList(){ System.out.print("(first-->last):"); Link current = first; while(current != null){ current.display(); current=current.next; } System.out.println(); } }
有俩个测试类我也献上代码
public class TestLinkList {
public static void main(String[] args) { LinkList linkList = new LinkList(); linkList.insertFirst(88, 0.89); linkList.insertFirst(23, 0.12); linkList.insertFirst(34, 0.23); linkList.insertFirst(17, 0.77); linkList.insertFirst(33, 0.45); linkList.displayList(); while(!linkList.isEmpty()){ Link deleteFirst = linkList.deleteFirst(); System.out.print("Delete"); deleteFirst.display(); System.out.println(); } linkList.displayList(); }
}
测试查询和删除你想删的数据
public static void main(String[] args) {
LinkList linkList = new LinkList();
linkList.insertFirst(88, 0.89);
linkList.insertFirst(23, 0.12);
linkList.insertFirst(34, 0.23);
linkList.insertFirst(17, 0.77);
linkList.insertFirst(33, 0.45);
linkList.displayList();
Link find = linkList.find(34); if(find == null) System.out.println("can't fount key"); else System.out.println("fount link with key :"+ find.iData); Link delete = linkList.delete(23); if(find == null) System.out.println("can't delete key"); else System.out.println("delete link with key :"+ delete.iData); linkList.displayList(); }
“`
上述就是单向链表的java实现.如果有不对的地方,我们可以多多交流
—小刀
相关文章推荐
- 文章分享:简单数据结构学习:单向链表
- 《Delphi 算法与数据结构》学习与感悟[8]: 单向链表的添加、删除与遍历
- 数据结构学习:单向链表的模板类实现
- 数据结构Java实现 --单向链表的插入和删除
- 数据结构学习之链表(单向、单循环以及双向)(递归实现)
- 数据结构学习之单向链表结构
- 数据结构Java实现【3】----单向链表的插入和删除
- 跟小刀学习 java 数据结构 栈和队列的实现
- 数据结构学习系列三-单向循环链表(c++实现且应用模板)
- java 集合-数据结构-单向链表
- Java描述数据结构学习之链表的增删改查详解
- 数据结构学习之链表的Java实现
- java数据结构之LinkedQueue(用链表实现的双端单向队列)
- 数据结构学习之单向链表结构
- 数据结构学习之单向链表的基本操作(非递归实现)
- 数据结构:线性表的链式存储(单向链表)--Java实现
- 数据结构-单向链表(一)(JAVA)
- 数据结构Java实现03----单向链表的插入和删除
- 基本数据结构学习总结:单向链表
- 数据结构 单向简单链表 java