
数据结构
文章平均质量分 71
主要解析遇到的算法题,使用语言为C++和C
钟眞龙
用尽一切合法合理合德的手段进步进步
展开
-
数据结构--链表篇一
单链表如上图即为单链表的示意图。将结点按照一定的次序进行串联起来的,即为单链表。因为如果要访问链表中的任何一个结点的话,都需要从head处开始遍历,故称其为单链表。单链表的每个结点存储地址并不连续(可能某两个之间是连续的,只不过几率很小),在访问的时候,只能从头指针开始沿着结点的link域进行。使用带头结点的单链表有两个好处:① 对带头结点的单链表,在表的任何结点之前插入节点或者删除表中的任何结点,所要做的都是修改前一结点的指针域。若单链表没有头结点,则首节点没有前驱结点,在其.原创 2021-01-01 22:54:13 · 601 阅读 · 0 评论 -
数据结构--多维数组
从逻辑结构上看,多维数组可以认为是一维数组的扩展,从物理结构上看,一维数组是多维数组的特例。我本人是这样构想的,比如看待二维数组:一维数组中的每个元素都是一维数组。多维数组的逻辑特征是:一个元素可能有多个直接前驱和多个直接后继。数组顺序表的定义把数组中的元素按照逻辑次序存放在一组地址连续的存储单元的方式称为数组的顺序存储结构,采用这种存储结构的数组称为数组顺序表。由于内存单元是一维结构,而数组是多个结构,因此用一组连续存储单元存放数组的元素存在一个次序问题。有两种顺序存储方式:列优先顺原创 2020-12-30 22:37:50 · 1397 阅读 · 0 评论 -
数据结构---第二章_线性表-顺序表的实现
基类:#pragma oncetemplate<class T>class List{public: void Clear(); // 置空线性表 bool IsEmpty(); // 线性表为空时,返回true bool Append(const T value); // 在表尾部添加元素 value,表的长度增加1 bool Insert(const int p, const T value); // 在位置p插入元素value,表的长度增加1 bool Del原创 2020-12-29 22:02:24 · 378 阅读 · 0 评论 -
数据结构--第一章
1. 简述逻辑结构与存储结构的关系。就我个人理解而言,逻辑结构,软件层面上看的话,用特殊的容器将数据按序保存起来的一种结构,如链表、数组、队列等。存储结构,即真实的物理存储结构,指硬件上。网上摘抄的回答:存储结构是逻辑结构的存储映像,逻辑结构指的是数据间的关系,它又分为线性结构和非线性结构,这两者并不冲突。一个指的是数据之间的关系,而另一个指这种关系在计算机中的表现形式。两者的区别就在于给他们定义的特殊操作,它们都有”出“和”入“两种操作,一个是“先进先出”,而一个是“后进先出”。一种逻辑原创 2020-12-24 22:32:08 · 855 阅读 · 1 评论 -
《数据结构》--数组中升序有序子数组的最大长度
#include <iostream>int GetOrderLen(int arr[], int length){ if (length < 0) return 0; else if (length < 2) return 1; int maxLen = 0; // 记录最长有序子数组 int currentLen = 0; // 当前记录的有序数组长度 for (int i = 0; i < length - 1; i++) { if .原创 2020-12-22 22:57:03 · 421 阅读 · 0 评论 -
C++输出流cout输出固定精度位数
C++ 的输出流cout不像C的printf那样能够直接操作数组double的精度位数但是可以通过这种方式固定输出精度#include#include using namespace std; int main() { double i = 0.5000; i += 5 ; cout << fixed << showpoint; cout<< setpreci原创 2017-10-17 09:17:19 · 2000 阅读 · 0 评论 -
输入一个有正负整数的数组,寻找最大子数组
给定一个整型数组,里面的元素有正有负,数组中连续的一个或者多个整数构成一个子数组。求所有子数组中元素和的值最大的子数组。分析思路: 需要2个变量来标记已经记录下的当前最大子数组的起始位置start0和末尾位置end0 需要2个变量来标记正在寻找的子数组的起始位置start1和末尾位置end1 需要两个子数组和原创 2017-10-21 17:36:38 · 1195 阅读 · 0 评论 -
将一元人民币兑换成1分、2分、5分,有几种兑换办法?
大学C++程序设计课本课后作业代码如下,以后再改善,提高效率 #include#include using namespace std; int main() { int start=100;//一元有一百分 int sum=0;//换算的种数 int a = 1, b = 2, c = 5;//a,b,c分别表示1分,2分,5分 /*ci,bi原创 2017-10-21 16:09:33 · 25672 阅读 · 3 评论 -
C++存在重定义的解决办法
有时候头文件之间进行相互引用的时候就会导致头文件的多次编译原创 2017-06-26 16:43:49 · 6733 阅读 · 0 评论 -
前序中序、中序后序二叉树的建立
上了大学刚开始学编程语言,一开始忙头乱脚,什么都不会。之前看到一篇关于求职的文章,提到说写博客,然后应试者与主考官聊到博客,说自己写了很多有关于编程的东西,今天我也要开始写了!/*关于二叉树,怎么去建树,一开始自己想来想去,给你一个前序和中序,或者后序中序,到底该怎么建,一开始自己也非常的糊涂,自己想了大概天,实在是不太明白,结果在网上一查,哦,原来是这样的,采用递归的方法去建树,转载 2015-12-07 21:54:13 · 644 阅读 · 0 评论 -
求C++数据结构二叉树的宽度
/*之前因为一直自己在想怎么构建二叉树,耽搁了继续去求二叉树的宽度;下面我想谈谈我自己关于怎么去求二叉树的最大宽度的想法我非常肯定一些大神用各种简单的代码求二叉树的宽度,但是自己想出来的也是挺好的,尽管可能早就有人提到了这个想法,但怎么去实现,还得好好写代码*//*首先我们知道,二叉树有先序遍历,后序遍历和中序遍历,层次遍历,我们学校上机老师出题,只考我们前面三个,而且在建树的时候原创 2015-12-08 22:30:09 · 3215 阅读 · 0 评论 -
C++二叉树左右孩子的交换
二叉树每个结点实现左右孩子(如果存在)的交换,这个思想大概就是判断一下树的每个结点是否存在左、右结点,若存在,则直接交换位置核心代码如下:通过递归遍历或者其他的遍历,在遍历的同时,进行对结点判断,是否存在左孩子和右孩子,若存在(至少一个),则进行交换void Exchange(BiNode*t) { if(t->lchild!=NULL)Exchange(t->lc原创 2015-12-08 22:57:18 · 3357 阅读 · 0 评论 -
二叉树如何实现双亲结点及求树的高度
求二叉树的高度,可以用递归的思想去求解,也可以用非递归的思想去求解,只不过,递归的代码简单明了,但是总的来说,递归有递归的好处,非递归当然也有非递归的好处。求树的高度的递归思想和递归建树的思想差不多: 从最底层的子树(结点)开始,求每颗子树(个结点)的左子树和右子树原创 2015-12-08 23:07:38 · 8134 阅读 · 0 评论