java实现单链表的初始化,创建,删除,插入,查找,排序,同项删除,退出等功能

来源:互联网 发布:淘宝免费购物的方法 编辑:程序博客网 时间:2024/04/19 08:45

          实习的最后一天,是在不想这样干坐着,上网看着那些无聊的信息。 送上一句:此刻打盹,你将做梦,此刻学习,你将圆梦。 数据结构与算法是我一直想去精通,但是一直没搞出个所以然来,好吧,今天就从单链表下手吧。结点包含两个域:data域---存放结点值的数据域;next域---存放结点的直接后继的地址(位置)的指针域(链域)。链表通过每个结点的链域将线性表的N个结点按其逻辑顺序链接在一起;每个结点只有一个链域的链表称为单链表(Single Linked List)。

      第一:结点本身就是一个类,现在先声明结点类。

package demo.zhuchuan.first;public class Node {/*节点类*/  private int data;        /*节点数据*/  private Node node_next; /*节点的下一个节点*/  public Node(int val_data){ /*节点构造函数*/  this.data = val_data;  node_next = null;  }  public void setNode_next(Node val_node){/*设置节点的下一个节点*/  node_next = val_node;  }  public Node getNode_next(){/*获取节点的下一个节点*/  return node_next;  }  public void printNode(){  /*输出节点数据*/  System.out.println(this.data+" ");  }}

      第二:声明一个访问链表的类。

package demo.zhuchuan.first;public class SingleLinkedList {/*单链表类*/    private Node pointer_head,pointer_tail;/*链表的头指针和尾指针,都是伪指针,实属节点*/        public SingleLinkedList(){/*单链表构造函数*/     pointer_head = pointer_tail =null;/*指针初始化都为空*/    }        public boolean isEmpty(){/*判断链表是否为空函数*/     return pointer_head == null;    }        public void addNode(int val_data){/*链表增加节点函数*/     if(this.isEmpty()){/*判断链表是否为空*/     pointer_head = pointer_tail = new Node(val_data);/*链表为空,头指针和尾指针都指向新增节点*/     }else{     pointer_tail.setNode_next(new Node(val_data));/*链表不为空,新增节点连接到表尾,尾指针指向新增节点*/     pointer_tail = pointer_tail.getNode_next();        }    }        public void printListNode(){/*输出链表函数*/     for(Node temp = pointer_head;temp != null;temp = temp.getNode_next()){      temp.printNode();     }    }    public static void main(String[] args) {SingleLinkedList singleLinkedList = new SingleLinkedList();singleLinkedList.addNode(1);singleLinkedList.addNode(2);singleLinkedList.addNode(3);singleLinkedList.printListNode(); }}

     

     完成了第一步,初始化了,接下来要做的就是插入、删除了,接着把相关的时间什么复杂度搞一下。

 

原创粉丝点击