赞
踩
- public class Link {
- public long dData;
- /**
- * 每个Link对象都包含一个对下一个链结点引用字段(next)
- * 当前对象数据next对下一个对象数据的引用,形成一种链结
- */
- public Link next;
-
- public Link(long d){
- this.dData = d;
- }
-
- public void displayLink(){
- System.out.println(dData);
- }
- }
创建SortedLink
- public class SortedLink {
-
- private Link first;
-
- /**
- * 添加数据
- * @param d
- */
- public void insert(long d){
- //创建对象并赋值
- Link newLink = new Link(d);
- Link previous = null;
- //获取当前数据
- Link current = first;
- /**
- * 判断当前数据是否为null
- * 并且插入的值是否大于当前的值
- */
- while (current != null && d > current.dData){
- /**
- * 符合条件把current赋值给previous
- */
- previous = current;
- /**
- * 当前链结点等于next 下一个链结点
- * 沿着链表继续向后移动
- * while判断继续循环
- */
- current = current.next;
- }
- /**
- * previous等于null那么first等于newList新插入的值排在前头;
- */
- if (previous == null){
- first = newLink;
- }else{
- /**
- * previous不等于null,说明有符合 d > current.dData 条件的值插入进来
- * previous下一个next就等于newLink新创建的值
- */
- previous.next = newLink;
- }
- /**
- * 新插入的值的下一个next就等于current
- */
- newLink.next = current;
- }
-
- /**
- * 删除头部数据
- * @return
- */
- public long remove(){
- //获取当前头部数据
- Link temp = first;
- //改变first值,让它等于下一个对象的引用
- first = first.next;
- return temp.dData;
- }
-
- /**
- * 打印输出
- */
- public void display(){
- System.out.println("输出->");
- Link current = first;
- while (current != null){
- current.displayLink();
- current = current.next;
- }
- }
-
- }
创建Main方法测试
- public class SortedLinkMain {
- public static void main(String[] args) {
- SortedLink sortedLink = new SortedLink();
- //添加
- sortedLink.insert(50);
- sortedLink.insert(20);
- sortedLink.insert(30);
- sortedLink.insert(10);
- sortedLink.insert(40);
- //打印
- sortedLink.display();
- //删除
- System.out.println("删除:" + sortedLink.remove());
- System.out.println("删除:" + sortedLink.remove());
- //再次打印
- sortedLink.display();
- }
- }
控制台输出
- 输出->
- 10
- 20
- 30
- 40
- 50
- 删除:10
- 删除:20
- 输出->
- 30
- 40
- 50
-
- Process finished with exit code 0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。