数据结构刷题
Tian Meng
大二C++选手,目前在学习C++,Linux网络编程
展开
-
数组代码实现cpp
【代码】数组代码实现cpp。原创 2023-11-09 20:29:38 · 95 阅读 · 0 评论 -
单向循环代码实现cpp
【代码】单向循环代码实现cpp。原创 2023-11-09 20:55:59 · 124 阅读 · 0 评论 -
字符串取出多余空格的三种方法
如果使用双指针去移除空格,最后resize一下字符串的大小,就可以做到时间复杂度为O(n)这个题的难点是去除多余的空格,下面我将详细讲解一下去除多余空格的几种方法。但是erase操作上套了一个for循环,所以时间复杂度为O(n。双指针的实现过程需要纸上手写画一下,实现过程也相对简单。第一种方法是逐个字符的去遍历,遇到多余空格就删除。这个算法思路很简单,遇到空格就erase。,逻辑是一样的只不过是去除空格。原创 2023-11-10 09:52:01 · 1052 阅读 · 0 评论 -
数组奇偶数调整问题——双指针
【代码】数组奇偶数调整问题——双指针。原创 2023-11-09 20:08:10 · 226 阅读 · 0 评论 -
5.22牛客做题
判断:在表头和表尾都可能有元素被插入的情况下,在单循环链表中设置尾指针比设置头指针好。( )正确。原因如下:在设置尾指针时,对于链表的头插和尾插操作都可以在O(1)时间复杂度内完成。如果设置头指针,虽然在头部插入元素的操作可以在 O(1) 时间复杂度内完成,但在尾部插入元素就需要从头开始遍历整个链表,直到找到尾部的元素,这样的时间复杂度是 O(n),n 是链表的长度。原创 2023-05-22 20:23:31 · 734 阅读 · 0 评论 -
数组地址3个题
向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需要向后移动(n-i+1)个元素。第 i 前个元素都是不动的,那么就是i-1个元素,那么需要移动的元素就是n-(i-1)个元素。从第 i 个元素开始,包括第 i 个元素(因为题目说在第 i 个元素。既然问需要移动多少个元素,那么可以逆向思考,有多少个元素不动,)在内,直到最后一个元素,都要向后移动一位。的前方有3*7+4=25个元素,共50字节。的地址为407+(5*12+5)=472。的位置是x=420-12-1=407。原创 2023-04-26 00:11:03 · 637 阅读 · 0 评论 -
C语言实现哈夫曼编码压缩存储
【代码】C语言实现哈夫曼编码压缩存储。原创 2023-04-24 19:55:04 · 288 阅读 · 0 评论 -
数组地址+链表的优缺点
静态链表的插入和删除操作是通过修改相应节点的指针实现的,不需要移动被删除或插入位置之后的元素,因此插入和删除操作的时间复杂度是 O(1)。但是,静态链表在空间利用率方面不如链式存储结构,因为静态链表需要使用额外的数组空间来存储节点的指针。数组中,下标为 0 的元素通常被用作备用链表的头结点,备用链表中的元素用来存储删除的节点,空闲的节点用于插入新的节点。C:单链表在第一个元素前加元素,只需要改变头结点的后驱结点和原第一个元素的前驱结点就可以。首先需要注意的是:位置和下标的区别,下标从0开始,位置从1开始。原创 2023-04-23 21:40:51 · 380 阅读 · 1 评论 -
对称矩阵压缩数组,数组元素引用
pc是一个数组指针(指向数组的指针),指向列数为5的二维数组,pc=c,表示pc指向二维数组的第一行,pc+1表示向下偏移一行,一行五个元素,*pc得到二维数组c的第一行的首地址,+2表示偏移到c[0][2]的地址,解引用就得到数据2。c[4][5]可以理解为4个长度为5的一维数组,这四个一维数组的地址都要用数组指针存放。就是一个指向列数为3的二维数组指针,数组里的值为int类型,可以想作。则a[8][5]的地址为1+2+3+4+5+6+7+5==33。,就是指针数组,数组的每个元素都是。原创 2023-03-18 23:26:45 · 76 阅读 · 0 评论