
数据结构与算法
shuang_1998
区块链方向研究生一枚
展开
-
二叉树的顺序存储—C++实现
二叉树的顺序存储—C++实现二叉树的顺序存储依靠数组实现,最重要的是前序、中序、后序、层序四种遍历方式及获取深度、求所有结点、叶子结点的操作,总体不难。头文件如下:#pragma once#include<iostream>#include<queue>using namespace std;#define Maxsize 100class BinaryTree{public: BinaryTree(); ~BinaryTree(); void CreatT原创 2021-04-12 21:29:12 · 3616 阅读 · 4 评论 -
Leetcode1—两数之和C++实现
Leetcode1—两数之和C++实现题目:给定一个数组,和一个目标值target,遍历数组中的元素,找到两个元素之和恰好等于target,返回两个元素的下标。输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。解题思路:设置两个空vector,一个将原数组中的元素全部拷贝过来,进行遍历查找,其中采用双指针的方法:指针i指向首元素,指针j指向尾元素,找到两个元素和等于target之后,原创 2021-04-03 19:30:17 · 375 阅读 · 0 评论 -
快速排序—C++实现
快速排序—C++实现快速排序虽然看着不难、理解起来也很简单,但是值得注意的点还是有很多,一不小心就踩坑!首先:快排的思想是:选定一个基准为,采用双指针的方法,左指针找比基准位小的数,右指针找比基准位大的数,进行交换,最后的结果就是,基准位左边的都是比它小的数,基准位右边都是比它大的数,再分别对这两个区间进行递归排序!双指针的顺序要注意退出递归的条件不能少循环嵌套循环具体实现:#include<iostream>using namespace std;void QuickSor原创 2021-04-03 18:49:47 · 1654 阅读 · 1 评论 -
字符串的顺序存储—C++实现
字符串的顺序存储—C++实现字符串的实现先对于之前的线性表难度有很大提高,但顺序存储的容器依然是数组。必须有两个内置的变量:一个存储字符串的数组 、一个显示数组长度的变量顺序存储的操作如下:对数组初始化,为其赋值遍历输出数组元素获取数组的长度从数组中元素i开始,删除长度为j的子串(i为子串的首元素),返回剩下的字符串将一个字符串中的所有元素拷贝到另一个字符串数组中判断两个字符串是否相等链接两个字符串获取数组中第i个元素开始,长度为j的子串在字符串第i个位置,插入一个子串,返回插入子串原创 2021-04-02 15:08:54 · 2499 阅读 · 0 评论 -
队列的链式存储—C++实现
队列的链式存储—C++实现队列的链式存储也类似于单链表,只不过要求:只能从队尾添加结点、队头删除结点。注意删除结点时要考虑只有一个结点与多个结点的情况!头文件如下:#pragma once#include<iostream>using namespace std;class QueueNode {public: int data;//数据域 QueueNode* next;//指针域,指向队列中下一个结点};class QueueList{public: Queue原创 2021-03-31 20:56:40 · 291 阅读 · 0 评论 -
队列的顺序存储—C++实现
队列的顺序存储—C++实现队列是一种先进先出的数据结构,特点在于:只能从队列的一端插入元素(队尾);从队列的另一端删除元素(队头),要记住两个公式:①判断队列是否已满:(rear+1)%Maxsize==front?若等于==>队列已满;②获取队列的长度:(rear-front+Maxsize)%Maxsize其中rear指向队尾元素,front指向队头元素队列的顺序存储包括以下操作:入队、出队、遍历输出、获取长度等头文件如下:#pragma once#include<iostrea原创 2021-03-31 15:56:49 · 377 阅读 · 0 评论 -
栈的链式存储—C++实现
栈的链式存储—C++实现栈的链式存储类似于单链表的链式存储,头指针就相当于指向栈顶结点的指针。相当于只能操作单链表的头部,操作有:入栈、出栈、判断是否为空、获取栈顶结点的数据。头文件如下:#include<iostream>using namespace std;class StackNode {public: int data; StackNode* next;//指向下一个结点的指针};class LinkStack {public: LinkStack();原创 2021-03-30 21:59:53 · 588 阅读 · 0 评论 -
栈的顺序存储C++实现
栈的顺序存储C++实现栈的顺序存储类似于数组,栈是一种先进后出的数据结构,只允许对栈顶元素进行操作,不允许有遍历的行为,常见操作有入栈、出栈、获取栈顶元素、获取栈的大小等头文件如下:#pragma once#include<iostream>using namespace std;class Stack {public: Stack(int size); ~Stack(); int Push(int data);//入栈 int Pop(int* x);//出栈 int原创 2021-03-30 20:36:39 · 482 阅读 · 1 评论 -
剑指offer22—链表中倒数第k个节点
剑指offer22—链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点思路:本题可利用双指针的思想,先让两个指针p、q均指向第一个结点,接着让p先走到链表中k的位置,那么p与q的距离为k,接着让两个指针同时向前走,当p走到null的时候,q恰好处于倒数第k个位置头文件如下:#prag原创 2021-03-25 21:57:37 · 77 阅读 · 0 评论 -
剑指offer24(反转链表)
leetcode题解:剑指offer24(反转链表)定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路:反转字符串的本质就是原链表的箭头反转,从尾结点开始向头结点遍历输出,将原链表中的箭头反转。因此需要三个指针,一个指向当前结点、一个指向当前结点的前一结点、一个指向当前结点的后一结点。头文件如下:#pragma原创 2021-03-25 20:34:21 · 141 阅读 · 0 评论 -
线性表的链式存储(二)
线性表的链式存储(二)这篇主要实现线性表最主要的功能:插入和删除元素,包括:①根据下标索引m,找到线性表中指向该节点的指针②头插、尾插、指定位置插入③头删、尾删、指定位置删除④清空线性表头文件如下:#pragma once#include<iostream>using namespace std;class Node {public: int data; Node* next;};class LinkList {public: LinkList();//构造原创 2021-03-25 15:30:03 · 86 阅读 · 0 评论 -
线性表的链式存储(一)
线性表的链式存储(一)线性表的链式存储简称链表,相较于顺序存储,在添加、删除元素时能够提供很大的便利,这部分介绍如何用C++实现单链表的①构造、析构函数 ②创建单链表 ③判断是否为空 ④计算单链表的长度 ⑤遍历单链表,设置单链表中有5个结点(可修改)头文件如下:#pragma once#include<iostream>using namespace std;class Node {public: int data; Node* next;};class LinkList原创 2021-03-24 21:59:30 · 109 阅读 · 0 评论