
DS
PHONER'S NUHC
up,up,up!!!
展开
-
时间复杂度和空间复杂度
时间复杂度和空间复杂度如何衡量一个算法的好坏?什么是时间复杂度?时间复杂度为什么不使用时间来衡量而使用基本语句的运行次数来衡量?时间复杂度的O渐进表示法时间复杂度的:最优、平均、最差情况,为什么时间复杂度看的是最差情况?如何求解:二分查找、递归求阶乘、递归斐波那契的时间复杂度?什么是空间复杂度?如何求空间复杂度? 普通函数&递归函数分析递归斐波那契数列的:时间、空间复...原创 2019-05-15 11:38:07 · 247 阅读 · 1 评论 -
二叉树的链式存储
1. 分析顺序存储二叉树的优缺点2. 使用孩子表示法实现二叉树的以下操作:typedef char BTDataType; typedef struct BTNode { struct BTNode* _pLeft; struct BTNode* _pRight; BTDataType _data; }BTNode; // 二叉树的创建 BTNode* CreateBinT...原创 2019-06-01 15:07:47 · 256 阅读 · 0 评论 -
二叉树顺序存储之堆(下)
3. 对上一篇博客的堆进行改造,使用户可以控制创建大堆还是小堆typedef int (*PCOM)(HPDataType, HPDataType); // 堆中元素进行小于比较 int Less(HPDataType left, HPDataType right); // 堆中元素进行大于比较 int Greater(HPDataType left, HPDataType righ...原创 2019-05-29 22:23:28 · 176 阅读 · 1 评论 -
二叉树顺序存储之堆(上)
1. 熟悉堆的概念以及特性2. 实现堆的以下接口:typedef int HPDataType; typedef struct Heap { HPDataType* _array; int _capacity; int _size; }Heap; // 用数组初始化堆 void InitHeap(Heap* hp, HPDataType* array, int size); ...原创 2019-05-29 22:06:05 · 223 阅读 · 1 评论 -
树以及二叉树的基本概念
树以及二叉树的基本概念掌握树的基本概念掌握树的相关概念掌握树的表示方式熟悉二叉树的基本概念以及特性熟悉完全二叉树以及满二叉树的概念熟悉二叉树的性质:1 2 3 4 5熟悉二叉树的存储方式掌握树的基本概念树是一种非线性的数据结构,它是由n(n >= 0) 个有限节点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树,也就是说它是根朝上,而叶朝下的...原创 2019-05-25 19:37:01 · 321 阅读 · 1 评论 -
栈和队列
栈和队列什么是栈,栈有什么特性?用C语言实现一个动态栈栈和程序运行时的栈区有什么区别?为什么将递归程序转化成循环时需要用到栈?什么是队列,队列有什么特性?栈和队列有什么区别?用C语言实现一个队列什么是栈,栈有什么特性?栈:一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO...原创 2019-05-25 18:26:03 · 271 阅读 · 0 评论 -
链表面试题
链表面试题删除链表中等于给定值 val 的所有节点。反转一个单链表。给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。输入一个链表,输出该链表中倒数第k个结点。将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于...原创 2019-05-23 12:51:18 · 221 阅读 · 0 评论 -
链表之带头双向循环链表的增删查改实现
带头双向循环链表直接上代码:注释即总结DList.h#pragma once#include<stdio.h>#include<assert.h>#include<malloc.h>#include<stdlib.h>typedef int DLDataType;typedef struct DNode{ DLDataType...原创 2019-05-21 23:45:07 · 267 阅读 · 2 评论 -
冒泡排序(C语言实现)
冒泡排序(C语言实现)直接上代码:(注意理解注释)#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>void my_swap(int* a, int* b)//交换的时候传地址(通过这两个地址去寻找对应变量){ //形参仅仅是实参的一份临时拷贝(如果不传地址的话就仅...原创 2019-05-21 17:24:23 · 244 阅读 · 1 评论 -
链表之单链表
1. 熟悉什么是链表,链表的分类?2. 熟悉链表带头结点和不带头结点的区别?3. 完成单链表的以下基本操作:typedef int SDataType; // 链表的节点 typedef struct SListNode { SDataType _data; struct SListNode* _pNext; }Node, *PNode; // 链表的结构,给一个头指针保...原创 2019-05-20 16:53:26 · 227 阅读 · 1 评论 -
线性结构之顺序表
1. 什么是线性结构?2. 线性结构中都包含什么内容?3. 什么是顺序表?顺序表的分类?4. 完成动态顺序表的以下操作:// 动态的顺序表typedef int DataType;typedef struct SeqList{DataType* _array;int _capacity; // 顺序表的总大小int _size; // 顺序表中有效元素的个数}SeqList...原创 2019-05-15 23:12:56 · 297 阅读 · 0 评论 -
排序
常见排序算法1 插入排序基本思想:直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与array[i-1],array[i...原创 2019-07-26 11:08:04 · 373 阅读 · 2 评论