数据结构学习
倚街听雨
把螺丝拧到极致……
展开
-
基本排序算法
归并排序归并排序是建立在归并操作上的一种有效的排序算法,采用分治法(Divide and Conquer),将已有序的序列合并得到完全有序的序列。归并排序主要有两种实现方法:1.递归实现2.迭代实现时间复杂度:归并排序以O(N*logN)最坏情形时间运行,而所使用的比较次数几乎最优,它是递归算法的一个好实例。先定义一个归并方法//传入一个数组,L为左边界,M为中点,R为右边界public static void merge(int[] arr,int L,int M,int R){原创 2021-06-13 19:34:49 · 69 阅读 · 0 评论 -
JAVA笔记
二叉查找树的删除节点二叉查找树的一般操作中最复杂的,虽然删除节点对于人们来收很不友好,但是在很多树中应用又非常广泛。删除节点的一般思想:1.找到要删除的节点2.删除节点3.用后面的节点替补已删除的节点。在二叉查找树中删除节点要考虑三种情况:1.该节点是叶节点(没有子节点)2.该节点有一个叶子节点3.该节点有两个叶子节点以上三种情况是越来越复杂。public boolean delete(int key) { Node current = root; //要删除的节点原创 2020-12-23 22:42:40 · 55 阅读 · 0 评论 -
双向链表
前言:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。由图可知双向链表由头指针、尾指针和数据域组成。之前的单链表就只有一个指针和一个数据域,这也造成了单链表访问时只能从头开始,直到链表的结尾。而双向链表前后的有两个指针,既可以从头遍历到尾, 又可以从尾遍历到头,也就是一个节点既有向前连接的引用, 也有一个向后连接的引用。因此,双向链表可以有效的解决.原创 2020-11-13 23:27:33 · 1478 阅读 · 0 评论 -
单链表的应用
前言:上一节通过学习单链表,知道单链表的是随机存取结构,要获取元素的元素必须从头指针出发顺序查找,因此也称为顺序存取的存取结构,使用单链表可以克服数组链表需要预先知道数据大小的缺点,实现灵活的动态内存管理。这里我们用C语言结合单链表来实现一个可以实现增删改查的学生管理系统。#include<stdio.h>#include<string.h>#include<stdlib.h>//定义结构属性struct MM{ char name[20]; in原创 2020-11-11 21:01:06 · 409 阅读 · 0 评论 -
单链表
数据结构之单链表(有表头)单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象)+指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。C语言实现一个有表头(头节点不存放数据)的单链表1.首先用一个结构体描述数据的节点//定义节点结构struct Node{ int data; //存储int类型的数据 struct Node*next; //结构体指针原创 2020-11-10 21:17:40 · 172 阅读 · 0 评论