云计算
数据结构 标签描述

Example008 题目 构造串的链表结点数据结构(每个结点内存储一个字符),编写一个函数,找出串str1中第一个不在串str2中出现的字符。 分析 所谓串的链表结点数据结构,就是单链表,只不过存储的数据类型变成了char类型。 而本题的算法思想是:从头到尾扫描串str1,对于str1中的每一个结点判断是否在str2中出现,若出现,则继续扫描str1中的下一个字符;若没有出现,则返回当前检测的字符。如果str1中的所有字符都在str2中出现,则返回'\0'。 即双层for循环,算法思想是很简单,无非就是双层遍历。 图解 C实现 核心代码: /找出串str1中第一个不在串str2中出现的...

  7jPfnBIFtnum   2024年05月31日   54   0   0 链表数据结构算法

序列化和反序列化N叉树。序列化是指将一个数据结构转化为位序列的过程,因此可以将其存储在文件中或内存缓冲区中,以便稍后在相同或不同的计算机环境中恢复结构。设计一个序列化和反序列化N叉树的算法。一个N叉树是指每个节点都有不超过N个孩子节点的有根树。序列化/反序列化算法的算法实现没有限制。你只需要保证N叉树可以被序列化为一个字符串并且该字符串可以被反序列化成原树结构即可。注意:N的范围在[1,1000]不要使用类成员/全局变量/静态变量来存储状态。你的序列化和反序列化算法应是无状态的。力扣428。 自然智慧。递归。 代码用golang编写。代码如下: packagemain import( "...

  zNRyot8onCGb   2024年05月17日   64   0   0 数据结构leetcodegolang

什么是数据结构 数据结构是计算机存储、组织数据的方式(指能够被计算机识别、存储和加工处理的信息的载体),是指相互之间存在一种或多种特定关系的数据元素的集合 将数据合理的组织起来,就可以称做一种数据结构。 数据结构的几个基本概念和术语 1.数据 是指能直接输入计算机中,被计算机处理的符号和被计算机操作的对象。总的来说,数据就是计算机处理的符号。 数据有两个必备条件:能直接输入计算机,能被计算机直接处理。 2.数据元素 是数据结构中基本的独立单位,也被叫做元素、结点、记录等。 数据元素往往是由若干个数据项组成,数据项是具有独立含义的最小标识单位。 3.数据对象 是性质相同的数据元素的集合。(所谓...

  7jPfnBIFtnum   2024年06月14日   263   0   0 数据结构存储

题目 已知L为不带表头结点的单链表的表头指针(L非空),链表中存储的都是整型数据,写出实现下列运算的递归算法。 (1)求链表中的最大整数 (2)求链表中的结点个数 (3)求所有整数的平均值 分析 使用递归的方法。 代码 核心代码: /求链表中的最大整数/ intgetMax(LNodeL){ if(L->nextNULL){//链表中仅一个结点 returnL->data;//其值即为所求 } inttemp=getMax(L->next);//递归求后继结点的最大值 if(L->data>temp){//再与首元结点相比较,取大值 retur...

  7jPfnBIFtnum   2024年05月31日   56   0   0 链表数据结构

题目 编写一个函数,计算一个子串在一个主串中出现的次数,如果该子串不出现,则返回0.本题不考虑子串重叠,如:主串为aaaa,子串为aa,考虑子串重叠结果为2,不考虑子串重叠结果为1。 分析 模式匹配算法的扩展,统计子串的出现次数。 代码 核心代码: /计算子串在主串中出现的次数/ /str指的是主串;substr指的是子串/ intindex(Strstr,Strsubstr){ inti=0,j=0,sum=0; while(i<str.length&&j<substr.length){ if(str.ch[i]substr.ch[j]){ i;...

  zNRyot8onCGb   2024年05月31日   56   0   0 数据结构字符串

题目 将关键字序列{7,8,30,11,18,9,14}散列存储到散列表中,散列表的存储空间是一个下标从0开始的一维数组,散列函数为H(key)=(key3)Mod7,处理冲突采用线性探测再散列法,要求装填因子为0.7. (1)请画出所构造的散列表。 (2)分别计算等概率情况下,查找成功和查找不成功时的平均查找长度。 分析

  7jPfnBIFtnum   2024年05月31日   88   0   0 数据结构

题目 关于浮点型数组A[0,..,n-1],设计实现下列运算的递归算法: (1)求数组A中的最大值; (2)求数组中n个数之和; (3)求数组中n个数的平均值。 分析 (1)如果数组长度为1,则可以直接返回最大值;否则将数组A视为两部分,即A[0]和A[1,...,n-1]。如果A[0]大于A[1,...,n-1]中的最大值,则返回A[0],否则返回A[0],反之按照上一步的方法递归地处理A[1]和A[2,...,n-1]。 (2)如果数组长度为1,则可以直接返回求和结果;否则将数组A视为两部分,即A[0]和A[1,...,n-1]。递归地处理A[1,...,n-1]中n-1个数的和,使之...

  zNRyot8onCGb   2024年05月31日   57   0   0 数组数据结构

题目 编写一个算法,将m(m≥2)个有序(从小到大)顺序表合并成个有序顺序表, 假设所有顺序表存储在一个m行maxSie (maxSize 足够大)列的二维数组lists[m][maxSize]中,要求把1m-1行所在的顺序表合并在0行所在的顺序表中,各表的长度存储在数组lens[m]中,合并过程中不另设新的顺序表存储空间。 分析 可以将m各顺序表的合并先处理为两个顺序表的合并,参考:将两个有序(非递减有序)顺序表合并成为一个顺序表,合并后的结果放到A[]中不另设新的顺序表存储空间,将lists中的1m-1行上的顺序表逐个合并到第0行上的顺序表中,返回-1表示...

  7jPfnBIFtnum   2024年05月31日   72   0   0 数据结构

题目 假设稀疏矩阵A和B(分别为mxn和nxk矩阵)采用三元组表示,编写一个函数,计算C=AxB,要求C也用三元组表示的稀疏矩阵。 分析 第一种思路是先将A和B由三元组转换成稀疏矩阵形式,然后进行矩阵相乘,再将相乘后的C用三元组表示。 第二种思路是本题在原理上与普通的矩阵相乘算法没有太大区别,其核心问题在于,根据给出的行号和列号找出原矩阵中的对应元素值,因此构造了一个函数getvalue0,当在三元组表示中找到时返回其元素值,找不到说明原该位置处的元素值为0,因此返回0.然后利用该函数计算出C的行号i和列号j处的元素值,若该值不为0,则存入其三元组表示的矩阵中,否则不存入。 代码 第一种思...

  zNRyot8onCGb   2024年05月17日   57   0   0 数据结构