数据结构
文章平均质量分 55
小源同学r
这个作者很懒,什么都没留下…
展开
-
【数据结构】第二章:线性表
线性表(Linear List)线性表(Linear List)是由同类型数据元素构成的有限序列。在数学上,它表示为: L ={a1, a2, a3, …, an其中{a1, a2, a3, …, an} 是数据元素,( n ) 为线性表的长度。当 ( n = 0 ) 时,线性表为空表。举个例子:假设有一个线性表 L = [10, 20, 30, 40, 50]10 的直接后继是 20,10 没有直接前驱。20 的直接前驱是 10,直接后继是 30。原创 2024-05-23 18:02:49 · 966 阅读 · 0 评论 -
【数据结构】第一章:绪论
一般来说,用计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后编出程序进行测试、调整直至得到最终解答。寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。例如,求解梁架结构中应力的数学模型为线性方程组;预报人口增长情况的数学模型为微分方程。然而更多的非数值计算问题无法用数学方程加以描述。例1图书馆的书目检索系统自动化问题例2 计算机和人对弈问题。原创 2024-05-23 11:33:05 · 960 阅读 · 1 评论 -
查找系列—非递归与递归代码实现
原创 2023-09-19 11:44:26 · 106 阅读 · 0 评论 -
查找系列—折半查找
原创 2023-09-19 11:10:33 · 65 阅读 · 0 评论 -
数据结构练习题【哈夫曼树、图、排序、散列表】
文章目录哈夫曼树练习一解答练习一练习二解答练习二图练习一解答练习一排序练习一解答练习一散列表练习一解答练习一哈夫曼树练习一假设用于通讯的电文由8种字母组成,字母及其在电文中出现的频率如下所示:字母ABCDEFG频率0.070.120.200.320.160.030.10哈夫曼编码要求:画出对应的哈夫曼树计算该树的带权路径长度为电文中的每种字母设计哈夫曼编码,并将其哈夫曼编码填入上表中解答练习一练习原创 2022-05-15 01:05:48 · 2921 阅读 · 7 评论 -
[算法设计题] 判断回文字符序列
判断回文字符序列要求如 “abcba“是回文;“good“就不是回文算法思想对字符串的前一半进行入栈操作,然后从栈里回去栈顶元素与字符串的后一半第一个字符进行比较。若相等则重复此操作。否则可以直接判断改字符序列不是回文序列算法描述int IsPalindrome(char *t){ InitStack(S); len = strlen(t); int i; for (i = 0; i < len / 2; i++) S.Push(S, t[i]); //一半字符入栈 if (le原创 2022-03-27 21:03:53 · 1067 阅读 · 0 评论 -
[算法设计题] 双栈结构
双栈结构要求要求编写双栈初始化,判断栈空、栈满、进栈和出栈已知的双栈结构:typedef struct{ int top[2], bot[2]; //栈顶和栈底指针 SElemType *V; //栈数组 int m; //栈最大可容纳元素} DblStack;算法思想两栈共享向量空间,把栈的栈底设置在左右两端,初始时,左栈的栈底等于栈顶等于-1;右栈的栈底等于栈顶等于m;两栈的栈顶相邻时栈满(右栈顶-左栈顶 = 1)两栈顶相向增长,栈顶指针指向栈顶元素。左栈执行进栈原创 2022-03-27 20:35:57 · 982 阅读 · 0 评论 -
[算法设计题] 计算后缀表达式
计算后缀表达式题目从键盘上输入一个后缀表达式,规定:后缀表达式长度不超过一行,以’$'结束操作数之间用空格分割。且操作符只有 + - * / 四种。后缀表达式:234 34 + 2 *$算法思想后缀表达式已经存在符号优先级,不需要再次考虑运算符的优先级,从左往右扫描即可。具体的实现步骤大致如下:初始化一个储存数字及中间结果的栈(opnd)从左往右扫描表达式 [操作数,运算符,$ ]4.1. 遇到操作数,进栈4.2. 遇到运算符,从栈里取出两个栈顶元素(取出栈最上面的两个数)。顺序:先原创 2022-03-26 22:59:43 · 4041 阅读 · 0 评论 -
C/C++合并两个升序链表
算法的思想1.需要合并的两个链表La,Lb,合并之后的链表Lc(用La的头节点)。2.定义两个辅助指针Pa,Pb分别是链表La,Lb的复制指针。3.从首元节点开始比较,当两个链表都没有到达链表尾部的时候,依次取其中较小的数据进行链接到Lc的最后4.如果两个元素的值相同,取La链的,把Lb链表的元素删除(确保新链表没有重复的元素)5.当一个链表结束的时候,把非空链表剩余的所有元素链接在Lc表的最后6.释放Lb的头节点(Lb链表就被删除了)代码实现+注释void MergeList(LinkLi原创 2022-03-21 22:24:01 · 4976 阅读 · 1 评论 -
数据结构实验之链表
#include <iostream>#include <stdlib.h>#include <time.h>using namespace std;typedef struct LNode{ int data; struct LNode *next;} LNode, *LinkList;//初始化单链表Lvoid InitList(LinkList &L){ L = new LNode; L->next = NULL;}/原创 2022-03-20 10:36:32 · 2085 阅读 · 0 评论 -
数据结构(01)绪论
1. 绪论1.1 数据结构的基本概念数据结构:按某种逻辑关系组织起来的一批数据,按一定的映象方式把它存放在计算机存储器中,并在这些数据上定义了一个运算的集合。数据(Data): 数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。数据元素(Data Element):是组成数据的基本单位,是数据集合的个体,在计算机中通常作为一个整体进行考虑和处理。数据元素是数据的基本单位,数据元素可由若干个数据项组成,数据项是构成数据元素的不可分割的最小单位。 `数据->数原创 2022-02-20 20:39:42 · 1079 阅读 · 10 评论 -
夜深人静写算法【递归】
1. 递归的概念1.1 文字描述简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。1.2 图示就以阶乘举例的图示2. 递归的应用场景2.1 递归能解决什么样的问题2.1.1 各种数学问题8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题, 球和篮子的问题(google编程大赛)2.1.2 各种算法快排,归并排序,二分查找,分治算法等。2.1.3 解决栈的问递归归代码比较简洁。【树,图,最小生成树】原创 2022-02-17 02:25:31 · 789 阅读 · 5 评论 -
夜深人静写算法【栈】
1. 栈的介绍1.1 文字描述栈的英文为(Stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top);另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除1.2 图示2. 栈的应用场景2.1 子原创 2022-02-15 23:44:08 · 827 阅读 · 6 评论