自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 问答 (3)
  • 收藏
  • 关注

原创 C++实现一个堆(更改堆中数据后,可以重新调整)

库中带的堆结构,无法实现更改后再调整,此时需要自己实现思路:使用一个hash表,保存数据与其对应的下标位置,需要更改时通过下标调整堆结构#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1#include<iostream>#include<vector>#include<hash_map>#include<string>using namespace std;//堆中存储数据使用自定义类

2022-04-12 10:59:59 367

原创 实现一个特殊的栈(能够返回栈中最小值)

实现一个特殊的栈(能够返回栈中最小值)思路:使用两个栈,data栈和min栈,同时进行push和pop,push时比较当前值与min栈栈顶元素大小,令较小值进栈。注:min栈始终记录着每一个状态下的最小值class m_stack{ public: void push(int value) { if(data.empty()&&min.empty()) { data.push(value); min.push(value); } el

2022-04-09 15:58:25 415

原创 单链表逆置:空间复杂度O(1)

带头结点单链表逆置从链表(带头结点)首个数据结点开始,重新头插法建表,将节点链接到头结点上//单链表结点结构typedef struct LNode{ int data; struct LNode* next;}LNode;void Inversion(LNode* head){ LNode* phead=head->next; LNode* q; head->next=NULL; //头结点next指针置空 while(phead!=NULL) { q=ph

2021-12-02 10:37:16 798

原创 链表:查找倒数第k个位置上的节点

//链表结点结构typedef struct Node{ int data; struct Node* next;}Node;思路:双指针,快指针先走k步,之后另一指针开始移动快指针:k+(n-k)慢指针:(n-k)此时慢指针来到倒数第k个结点位置int findElem(Node* head,int k){ int i=0; Node* phead=head->next; //带头结点的单链表 Node* p=head; while(phead!=NULL) {

2021-12-01 17:06:26 311

原创 C/C++面试(湖南兴盛优选一面)

1.STL中vector和list的区别a.vector内存空间连续,list双向链表实现,内存空间不是连续的b.vector插入删除中间元素需要移动后面元素,时间复杂度高;list插入删除元素依靠指针 操作,时间复杂度低c.vector以下标查找元素时间复杂度为O(1),list查找元素需要遍历链表,时间复杂度高2.怎么样判断一个单链表有没有环?快慢指针,快指针一次走两步,慢指针一次走一步,如果快指针不等于慢指针并且快指针不为空时一直循环,如果快指针为空,快指针不等于慢指针,说明链表没有环;如果

2021-11-24 07:39:09 1181 16

原创 C++实习面试(机试:湖南卫导信息科技)

总共3道题1.从一组身高中找出身高差最小的两个思路,排序后依次遍历将数组中后者减去前者,记录产生最小身高差的下标#include<iostream>using namespace std;void my_sort(int a[]){ for (int i = 1; i < 5; ++i) { int temp = a[i]; int end = i; while (end >= 0) { if (a[end] < a[end - 1])

2021-11-18 21:17:04 1528 5

原创 判断二叉树是否是二叉搜索树

二叉搜索树:任何一个节点的值都比左子树上的值大,比右子树上的值小判断:二叉搜索树中序遍历是一个递增序列1.中序遍历放入容器vector中,依次比较相邻元素void inorder_traversal(TreeNode& root,vector<TreeNode> v){ if(root==NULL) return ; inorder_traversal(root->left,v); v.push_back(root); inorder_traversal(root-

2021-11-17 09:56:42 865

原创 递归、非递归实现二叉树先序、中序、后序遍历

1.递归//中序遍历void inorder_traversal(Node* head){ if(head==NULL) return ; if(head->left!=NULL) inorder_traversal(head->left); printf("%d ",head->val); if(head->right!=NULL) inorder_traversal(head->right);}//先序遍历void preorder_traversal

2021-11-16 18:01:36 309

原创 数据结构与算法——反转链表

1.使用容器栈ListNode* reverseList(ListNode* head) { if(head==NULL) return head; stack<ListNode*> s; ListNode* p=head; while(p!=NULL) { s.push(p); p=p->next; }

2021-11-15 16:52:40 242

原创 C语言——冒泡、选择、插入

//冒泡排序void bubsort(int arr[],int n){ int i,j,flag; for(i=n;i>=0;--i) { flag=1; for(j=0;j<i-1;++j) { if(arr[j]<arr[j+1]) { swap(arr,j,j+1); flag=0; } } if(flag) break; }}//选择排序void selsort(int arr[],int n){ in

2021-11-15 14:12:46 1195

原创 C语言——堆排序

从小到大排序:建大根堆大根堆(大顶堆)是指根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,属于二叉堆的两种形式之一。//交换两个位置的值void swap(int arr[], int i, int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;}//建大根堆,找到最大元素void heapinsert(int arr[],int index){ while(arr[index]>arr

2021-11-14 14:27:35 945

原创 C语言—归并排序

归并排序思想:分治(从下而上)void process(int arr[],int L,int mid,int R){ int* a=(int*)malloc(sizeof(int)*(R-L+1); int i=L; int j=mid+1; int k=0; while(i<=mid&&j<=R) { if(arr[i]<arr[j]) a[k++]=arr[i++]; else a[k++]=arr[j++]; } while(i&

2021-11-13 15:53:52 609

原创 C语言—快排nlogn

快排代码实现思想:分治//将L-R范围上的元素分成三部分,并将左右两个部分的边界返回int* partition(int arr[],int L,int R){ srand((unsigned int)time(NULL)); int num=rand()%(R-L+1)+L;//随机生成指定元素,当指定元素太大或太小(相对于数组内部而言),都将影响快排效率 int left=L-1; int right=R+1; while(L<right) { //第一部分:小于指定元素的

2021-11-13 15:37:03 772

原创 C++程序编译过程

编译过程分为四个过程:预处理,编译,汇编,链接编译预处理:处理以#开头的指令;编译、优化:将源代码.cpp文件翻译成.s汇编代码汇编:将汇编代码.s翻译成机器指令二进制.o文件链接:汇编程序生成的目标文件,并不会立即执行,因为可能会出现:.cpp文件中的函数引用了另一个.cpp文件中定义的符号或者调用了某个库文件中的函数。链接的目的就是将这些文件对应的目标文件连接成一个整体,从而生成可执行的.exe文件 链接分为两种:静态链接:代码从其所在的静态链接库中拷贝到最终的可执行程序

2021-09-19 00:10:09 103

原创 C++面试语言基础

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

2021-08-28 20:35:09 187

原创 C++强制类型转换

@C++类型转换C++语言不会直接将两个不同类型的值进行运算(除了自己定义相应运算规则),而是先根据类型转换规则设法将运算对象的类型统一后再求值。C++中类型转换大体可以分为隐式类型转换和显示类型转换两种1. 隐式类型转换在程序执行过程中,无需程序员介入或了解,自动进行的类型转换被称作隐式类型转换。1.1算数转换添加链接描述2.显示类型转换新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全

2021-08-28 16:14:31 439

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除