数据结构
文章平均质量分 54
知福致福
这个作者很懒,什么都没留下…
展开
-
数据结构复习
抽象数据类型:对数据类型的描述,这种描述是抽象的,描述1.数据对象集,2.与数据集合关联的操作集。抽象数据类型:数组,矩阵,队列,栈,树(特别:二叉树),图。程序与算法 算法是有限指令集合 ,一定要在有限步骤内终止。抽象:不依赖于具体实现,只描述是什么,不涉及如何做到。数据对象类型的抽象:elementtype。对数据对象的描述不涉及具体的存储方式。程序等于数据加算法,程序可以无限运行。进程是程序在不同数据集合上运行的实体。渐进表示法分析算法复杂度的增长趋势。对操作的描述不涉及具体的实现。原创 2023-08-30 08:12:23 · 269 阅读 · 0 评论 -
找到字符串中所有字母异位词
找到字符串中所有的字母异位词原创 2023-08-29 11:19:16 · 79 阅读 · 0 评论 -
动态规划dp
动态规划原创 2023-08-23 22:36:57 · 56 阅读 · 0 评论 -
二叉排序树
二叉树中,任何结点均满足条件:“大于其左子树上的所有结点,小于其右子树上的所有结点(若存在的话)”,则称为二叉排序树,又称为二叉查找树(Binary Search Tree),或二叉搜索树。递归定义:若二叉树为空,则是二叉排序树;否则:它将满足以下性质:(1)若左子树非空,它的所有节点元素均小于其根节点元素;(2)若右子树非空,它的所有节点元素均大于其根节点元素。(3)左、右子树又都是二叉搜索树。1.查找代码:Position Find(BinTree BST,Element X){原创 2021-12-28 13:39:56 · 212 阅读 · 0 评论 -
realloc函数的用法
void * realloc(旧地址,newsize)当newsize大于旧地址的容量时,可对旧地址进行扩容操作,规则如下:首先考虑就近扩容,新的内存区域和旧的内存区域的起始地址相同,即新地址和就地址相同,同时保留旧的内存区域的数据成员,但新内存的容量是newsize。当就近扩容无法进行,即无法就近申请一块newsize的连续的新地址,此时将申请一块新的容量为newsize的地址,然后将原有数据从头到尾拷贝到新的内存区域。就近扩容#include <stdio.h>#include原创 2021-12-17 11:03:10 · 5637 阅读 · 0 评论 -
PTA deque
A “deque” is a data structure consisting of a list of items, on which the following operations are possible:Push(X,D): Insert item X on the front end of deque D.Pop(D): Remove the front item from deque D and return it.Inject(X,D): Insert item X on the r原创 2021-12-05 18:08:31 · 229 阅读 · 0 评论 -
PTA-另类循环队列
如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。函数接口定义:bool AddQ( Queue Q, ElementType X );ElementType DeleteQ( Queue Q );其中Queue结构定义如下:typedef int Position;typedef struct QNode *PtrToQNode;struct QNode {ElementType Data原创 2021-12-05 11:16:28 · 2285 阅读 · 0 评论 -
在一个数组中实现两个堆栈
3-1(*) 另类循环队列 (10 分)如果用一个循环数组表示队列,并且只设队列头指针Front,不设尾指针Rear,而是另设Count记录队列中元素个数。请编写算法实现队列的入队和出队操作。函数接口定义:bool AddQ( Queue Q, ElementType X );ElementType DeleteQ( Queue Q );其中Queue结构定义如下:typedef int Position;typedef struct QNode *PtrToQNode;struct QNo原创 2021-12-04 23:53:54 · 191 阅读 · 0 评论 -
记录指针相关的错误(一)
错误代码#include <iostream>using namespace std;//重命名的内容:元素类型,节点指针,数据结构类型typedef int ElementType;typedef struct SNode *PtrToSNode;struct SNode{ ElementType Data; PtrToSNode Next;};typedef PtrToSNode Stack;int length(Stack s){ St原创 2021-12-02 21:01:16 · 324 阅读 · 0 评论 -
KMP算法理解
先膜拜一下大佬的博客https://www.cnblogs.com/yjiyjige/p/3263858.html读了大佬的博客简单讲一下我个人的一点看法:1.kmp算法好在哪里?对于长度为n的子串p分治,匹配失败的原因有几种?p种,第1,2,3。。。个字符匹配失败,但是匹配过程种可能一直犯同一种错误,如果每一次犯错误都视为一个新的错误来处理那就太笨了,所以对于每一类错误要提前分析好解决办法2.当理解了这一个最基本的想法之后再去理解具体的处理一类错误的方法。关键:匹配失败后回溯的位置与主原创 2021-11-30 12:32:48 · 56 阅读 · 0 评论 -
PTA-共享后缀的列表
https://blog.csdn.net/qq_18873031/article/details/103215502我的答案PtrToNode Suffix( List L1, List L2 ){ List p1=L1,p2=L2; List t=L2; while(p1->Next) { while(p2->Next) { if(p1->Next==p2->Next)原创 2021-11-26 16:40:18 · 364 阅读 · 0 评论 -
数据结构(二):栈
栈:只能在一端进行元素的插入和删除操作的线性表特点:first in,last out一.1.栈的常规操作:2.栈溢出的处理单个栈:开辟更大的空间多个栈:分别开辟更大的空间共享空间,“浮动再分配”二.链式储存结构储存方式:同一般的线性单链表储存一样,但要注意栈顶和栈底好处:动态分配空间,没有栈溢出的问题...原创 2021-11-23 12:07:37 · 1291 阅读 · 0 评论