![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构错题本
文章平均质量分 63
只爱圣女果
正努力学习中…
展开
-
四、串的模式匹配
缺点之一在于,如果扫描到一个不匹配的字符,那么在next数组中查找对应从哪个模式串下标开始匹配,假如,显示从下标为2的地方开始匹配,如果下标为2的地方字符和发生匹配失败的字符一样,那么下标为2的字符的位置也必然发生匹配失败,根据下标为2的字符给出的next数组转而去寻找其对于的下一个下标值,才可能匹配成功,如果下一个下标的字符和第一次匹配失败的字符又一样,那么还会失败,以此类推,这也是next数组可以优化改进的地方。从操作对象上看,串操作的对象是子串,而线性表操作的对象是单个数据元素;原创 2023-07-17 15:15:40 · 159 阅读 · 0 评论 -
三、栈、队列和数组
A[i][j]=A[j][i],由此特点可以得知我们只需要存储A中一半的元素即可,按一半可分为上三角或者下三角,那一共就是(1+n)*n/2个空间大小,那按划分三角的方式和按行和按列,但是由于对称矩阵具有对称的性质,因此,当得知了当i和j互换以后,就可以实现从上三角到下三角的转换,因此,主要讨论行优先和列优先即可(以下都以下三角为例,并且数组从下标0开始,n阶)则,后面的入栈和出栈需要相应的,top指针应该后修改,x先操作,当top=maxsize-1||S.data[S.top]!=null时,栈满。原创 2023-07-14 23:17:14 · 40 阅读 · 0 评论 -
二、线性表的顺序存储(上)
因此,考虑另外一种方法,将A和B的中位数拿出来,分别为m1和m2,将两个中位数进行比较,如果两个中位数相等,那么答案就是二者之一,如果不等,判断,如果m1>m2,这个时候中位数一定不可能是A的较小的部分,中位数一定在A的后半部分产生,同理,B中中位数一定在小于m2的那部分产生,依次循环找下去,能够找到A和B的中位数,类似于做两个折半查找操作,因此,时间复杂度应该是O(logn)因为两个数组的中位数要进行比较,如果都是偶数数组,那么一个去前,另一个取尾部(在不保留中位数的情况下),两边的长度会不一致。原创 2023-07-14 16:07:47 · 36 阅读 · 0 评论 -
二、线性表的顺序存储(附)
分配连续的一整片空间,插入,删除等只需要修改指针,不需要移动元素,以next==-1为结束标志。插入需要考虑,如果在尾部插入,则如何处理尾结点,next指向null。原创 2023-07-14 16:11:27 · 147 阅读 · 0 评论 -
二、线性表的链式存储(下)
1.使用指针可以很方便地表示各种逻辑结构2.在链表的末尾插入和删除一个结点时,需要修改其相邻结点的指针域,而寻找尾结点及其前驱结点时,只有带头结点的双循环链表所需的时间最少。3.循环单链表,头指针head,有head->next->next==head,则线性表长度为?易知可为1,同时,如果是一个空表,因为head->next=head,而head->next=head,上式也成立。因此表长可为1也可为04.断链:如果链表前后有指针指示,不会因为语序的不同而造成断链。原创 2023-07-14 16:10:30 · 197 阅读 · 0 评论 -
一、时空复杂度
最坏的情况就是将两个链表的各个元素挨个比较,小的放前面,大的放后面,最终比到两个链表的最后一个元素时,后面剩的直接逆序插入。(1)两个长度分别为m和n的升序链表,要将其合并为一个降序链表,则在最坏的情况下的时间复杂度是——O(max(m,n))内层循环与外层循环有关联,假设外层循环执行k次,内层循环对应执行1,2,4,8,2。数据的物理结构(存储结构):顺序存储、链式存储、索引存储、散列存储(哈希存储)-1,又因为n原创 2023-06-28 21:11:27 · 50 阅读 · 0 评论