b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

实现二叉排序树 了解数据结构与算法:线性表(数组,链表)、栈、树(二叉树,A(2)

电脑杂谈  发布时间:2018-01-09 07:16:20  来源:网络整理

链表

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点组成,这些节点不必在内存中相连。每个节点由数据部分Data和链部分Next,Next指向下一个节点,这样当添加或者删除时,只需要改变相关节点的Next的指向,效率很高。

单链表的结构

下面主要用代码来展示链表的一些基本操作,需要注意的是,这里主要是以单链表为例,暂时不考虑双链表和循环链表。

代码3 链表的节点

class Node {

E item;
Node<E> next;

//构造函数
Node(E element) {
   this.item = element;
   this.next = null;

}

}

代码4 定义好节点后,使用前一般是对头节点和尾节点进行初始化

//头节点和尾节点都为空 链表为空

Node head = null;

Node tail = null;

代码5 空链表创建一个新节点

二叉排序树算法_实现二叉排序树_最佳二叉排序树又称为

//创建一个新的节点 并让head指向此节点

head = new Node(“nodedata1”);

//让尾节点也指向此节点

tail = head;

代码6 链表追加一个节点

//创建新节点 同时和最后一个节点连接起来

tail.next = new Node(“node1data2”);

//尾节点指向新的节点

tail = tail.next;

代码7 顺序遍历链表

Node current = head;

while (current != null) {

System.out.println(current.item);

current = current.next;

}

代码8 倒序遍历链表

static void printListRev(Node head) {

//倒序遍历链表主要用了递归的思想

if (head != null) {

printListRev(head.next);

System.out.println(head.item);

}

}

代码 单链表反转

//单链表反转 主要是逐一改变两个节点间的链接关系来完成

static Node revList(Node head) {

if (head == null) {
    return null;
}

Node<String> nodeResult = null;

Node<String> nodePre = null;
Node<String> current = head;

while (current != null) {

    Node<String> nodeNext = current.next;

    if (nodeNext == null) {
        nodeResult = current;
    }

    current.next = nodePre;
    nodePre = current;
    current = nodeNext;
}

return nodeResult;

}

上面的几段代码主要展示了链表的几个基本操作,还有很多像获取指定元素,移除元素等操作大家可以自己完成,写这些代码的时候一定要理清节点之间关系,这样才不容易出错。

链表的实现还有其它的方式,常见的有循环单链表,双向链表,循环双向链表。实现二叉排序树 循环单链表 主要是链表的最后一个节点指向第一个节点,整体构成一个链环。 双向链表 主要是节点中包含两个指针部分,一个指向前驱元,一个指向后继元,JDK中LinkedList集合类的实现就是双向链表。* 循环双向链表* 是最后一个节点指向第一个节点。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-59257-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...