使用java实现双向链表数据结构
来源:互联网 发布:安装python没有idle 编辑:程序博客网 时间:2024/05/22 03:03
今天到xxxx公司面试,前面的一些题目都是网上的一些面试题,最后一题考察的是数据结构,让介绍大学里学习的数据结构,并用代码实现链表的增加,删除,查询。这个之前在写练习时,写过链表的Demo,但是在这个关键时刻却忘了,不知道该怎么写,回来之后翻开之前写的代码重新看了一遍,在这里,我把我之前写的代码粘贴出来,供大家学习,希望大家能有所收获:
package link;public class Link {/** * 保存每一个节点,此处为了方便直接定义成内部类 * @author binchen * */class Node{private String data;private Node next; //保存下一个节点public Node(){}public Node(String data){this.data = data; //通过构造方法设置节点内容}public String getData() {return data;}public void setData(String data) {this.data = data;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}/** * 输出节点内容 */public void print(){System.out.println(this.data + "\t");if(this.next != null){this.next.print();}}/** * 添加节点内容 * @param newNode */public void add(Node newNode){ //将节点加入到合适的位置if(this.next == null){this.next = newNode;}else{ //如果不为空,则需要向下继续找nextthis.next.add(newNode);} }/** * 查找节点 * @param data * @return */public boolean search(String data){ //内部搜索的方法if(this.data.equals(data)){return true;}else{ //向下继续判断if(this.next != null){ //如果不等于null,就继续向下查找下去return this.next.search(data);}return false;}}/** * 删除节点 * @param data */public void deleteNode(Node previous , String name){if(name.equals(this.data)){previous.next = this.next;}else{if(this.next != null){this.next.deleteNode(this, name);}}}};private Node root; //链表中必然存在一个根节点public void setRoot(Node root){this.root = root;}public Node getRoot(){return this.root;}/** * 添加节点内容 * @param data */public void addNode(String data){ //增加节点Node newNode = new Node(data); //定义新的节点if(this.root == null){ //判断根节点是否存在,如果不存在就将第一个节点设置成根节点this.root = newNode; //将第一个节点设置成根节点}else{ //不过如果存在,【不是根节点】,放到最后一个节点之后this.root.add(newNode);}}/** * 输出全部的节点内容 */public void printNode(){if(this.root != null){ //如果根元素不为空this.root.print(); //调用节点类中的输出操作}}/** * 查找节点 * @param name * @return */public boolean contains(String name){return this.root.search(name); //调用node类中的查找方法}/** * 删除节点 * @param name */public void deleteNode(String data){if(this.contains(data)){ //判断节点是否存在//一定要判断此元素现在是不是与根元素相等if(this.root.data.equals(data)){ //内容是根节点this.root = this.root.next; //修改根节点,将第一个节点设置成根节点}else{this.root.next.deleteNode(root,data);}}}}
- 使用java实现双向链表数据结构
- java 实现双向链表(数据结构)
- 数据结构--java实现双向链表
- 数据结构--双向链表实现(java)
- 【数据结构】双向链表实现
- (Java)Java双向链表实现(数据结构七)
- [java数据结构]--java双向链表LinkedList的简单实现
- 【JAVA数据结构】双向链表
- Java数据结构--双向链表
- 数据结构之双向链表的Java实现
- 数据结构基础java实现—双向链表
- 数据结构之双向链表(JAVA实现)
- 数据结构——双向链表(Java实现)
- 数据结构学习笔记之用Java实现双向链表
- 数据结构之循环双向链表java实现
- 使用JAVA实现双向链表
- 数据结构之双向链表的实现
- 数据结构练习--双向链表的实现
- c++ static的作用,以及static对象在类和函数中区别
- Weblogic10 常用linux指令
- 重建二叉树
- JAVA中的"指针"
- 求前N个质数
- 使用java实现双向链表数据结构
- rand()和srand()
- archlinux批量添加用户
- org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
- mac 下的yun命令 Homebrew
- 胡子决定编程语言运势
- hdu 4267 树形dp
- 数组
- 王爽第十一章测试题答案