- 博客(16)
- 收藏
- 关注
原创 xdoj数据结构约瑟夫环
编号为1,2,...,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。现在给定一个随机数m>0,从编号为1的人开始,按顺时针方向1开始顺序报数,报到m时停止。报m的人出圈,同时留下他的密码作为新的m值,从他在顺时针方向上的下一个人开始,重新从1开始报数,如此下去,直至所有的人全部出圈为止。输入数据第一行为两个正整数n和m,分别表示人的个数及初始随机数,每组数据的第二行为n个整数,表示每个人持有的密码。用一行输出n个整数表示依次出圈人的编号,整数之间用空格分隔。总体来说不难,但是注意的点很多。
2023-11-22 13:03:40 209 1
原创 c语言数据结构之二叉树(一)构造二叉树以及遍历二叉树
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分 [1],该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点。二叉树是n个有限元素的。
2023-09-05 18:38:45 177 1
原创 c语言数据结构之线性表串的模式匹配(七)kmp算法求模式串
文章的开始我先对KMP算法的三位创始人Knuth,Morris,Pratt致敬,懂得这个算法的流程后你真的不得不佩服他们的聪明才智。简单来说就是:从主串s 和子串t 的第一个字符开始,将两字符串的字符一一比对,如果出现某个字符不匹配,主串回溯到第二个字符,子串回溯到第一个字符再进行一一比对。即子串的n个字符正好等于主串的前n个字符,而最坏的情况下时间复杂度为O(m*n)。你再回头看一遍就会发现,哦,原来是回溯的步骤太多了。主串依然指向’d’,而把子串进行回溯,让’d’与子串中’g’之前的字符再进行比对。
2023-08-19 19:35:55 91
原创 c语言数据结构之线性表串的模式匹配(六)简单的模式匹配算法
子串的定位操作通常称为串的模式匹配,它求的是子串(常称模式串)在主串中的位置。这里采用定长顺序存储结构,给出一种不依赖于其他串操作的。
2023-08-18 19:46:09 88 1
原创 c语言数据结构线性表之串(五)
子串在主串中的位置:以子串第一个字符所在主串的位置作为子串的位置。串,即字符串(String)是由零个或者多个字符组成的有限序列。如: S = ' HelloWorld!' *空格也算一个字符。*串的基本操作,如增删改查等通常是以子串作为操作对象。*串也是一种特殊的线性表,数据元素之间呈线性结构。字符在主串中的位置:字符在串中的序列。子串:串中任意连续的字符组成的子序列。空串与空格串: M='' N=' '
2023-08-18 12:00:38 96 1
原创 c语言数据结构线性表之循环队列(四)
tag 等于0时,若因删除导致 Q->front == Q->rear ,则为队空;tag 等于 1 时,若因插入导致 Q ->front == Q->rear ,则为队满。显然,队空的条件是 Q->front == Q->rear。若入队元素的速度快于出队元素的速度,则队尾指针很快就会赶上队首指针,如图( d1 )所示,此时可以看出队满时也有 Q ->front == Q -> rear。队满条件: (Q->rear + 1)%Maxsize == Q->front。
2023-08-17 20:56:40 77 1
原创 c语言数据结构线性表之栈(三)
栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。栈底(Bottom):固定的,不允许进行插入和删除的另一端。栈顶(Top):线性表允许进行插入删除的那一端。空栈:不含任何元素的空表。
2023-08-13 18:43:45 125 1
原创 c语言数据结构线性表之单链表(二)
在链式结构中,除了要存储数据元素的信息外,还要存储它的后继元素的存储地址。因此,为了表示每个数据元素ai与其直接后继元素ai+1之间的逻辑关系,对数据ai来说,除了存储其本身的信息之外,还需要存储一个指示其直接后继的信息(即直接后继的存储位置)。我们吧把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。指针域中存储的信息称做指针或链。这两部分信息组成数据元素ai的存储映像,称为结点(Node)。, an)的链式存储结构,因为此链表的每个结点中只包含一个指针域,所以叫做单链表。
2023-08-11 13:22:03 84 1
原创 c语言数据结构线性表之顺序表(一)
只要确定好了存储线性表的起始位置,线性表中任一数据元素都可以随机存取,所以线性表的顺序存储结构是一种随机存取的储存结构,因为高级语言中的数组类型也是有随机存取的特性,所以通常我们都使用数组来描述数据结构中的顺序储存结构,用动态分配的一维数组表示线性表。概念:用一组地址连续的存储单元依次存储线性表的数据元素,这种存储结构的线性表称为顺序表。特点:逻辑上相邻的数据元素,物理次序也是相邻的。
2023-08-09 21:52:42 61 1
原创 xdoj元素放置
定义一个一维整形数组num[50],输入正整数m、n(2≤m≤n≤7),输入一个m*n整形矩阵(值小于100),编写函数place()完成矩阵元素S型放置,从小到大排列,主函数完成数组输入和输出。输入正整数m和n(2≤m≤n≤7),输入一个m*n整形矩阵,含m*n个元素(值小于100)。格式输出:按行输出处理后的矩阵,S型排列,%3d,每行换行,最后一行不换行。S型排列,输出格式%3d,每行换行,最后一行不换行。
2023-01-19 22:50:50 198
原创 xdoj单词统计
输入字符串string[N](N≤100),各个单词以空格隔开,单词长度小于等于8,输入单词word[M](M≤8),在string中查找出相同的单词并统计该单词出现的次数信息,输出单词和出现次数的信息, 数据之间空一格空格。主函数输入字符串和待统计单词,编写函数count()实现统计和信息输出。格式输出:输出单词及其出现的次数信息,数据之间空一格。输入一行字符以空格隔开各个单词,输入要统计的单词。采用重循环结构实现计算过程,输出数据之间空一格。
2023-01-09 20:12:55 110
原创 xdoj82密码强度
每个人都有很多密码,你知道你的密码强度吗?3. 加分项2:密码包含两类不同字符+1分,包含三类不同字符+2分,包含四类不同字符+3分。按照此规则计算的密码强度为0~5。请你设计一个程序计算给出的密码的强度。1. 基础分:空密码(密码长度为零)0分,非空密码1分。输入为一个密码字符串,字符串长度不超过50个字符。2. 加分项1:密码长度超过8位,+1分。输出一个整数表示该密码的强度。
2022-12-27 11:06:16 293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人