2 折翊

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 48w+

栈与队列算法设计:(3)八皇后问题

目录1.题目2.题目分析3.参考代码4.测试结果八皇后问题的解,共92个。十皇后问题的解,共724个。1.题目  八皇后问题是19世纪著名的数学家高斯于1850年提出的,问题是:在8X8的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列和同一斜线上。设计算法实现八皇后问题的求解。2.题目分析  1.为了解决八皇后问题,我们这里使用栈和递归的结合。   首先,我们构建出一个8X8的棋盘,这里选择二维数组保存每个格子,并且所有格子的值初始化为0。接着,我们从棋盘的第一

2020-08-07 23:32:10

栈与队列算法设计:(2)括号匹配

目录1.题目2.题目分析3.参考代码4.测试结果1.题目   假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”,方括号“[”和“]”以及花括号”{“和”}“,且这三种括号可按任意的次序嵌套使用,请设计算法判断给定的表达式所包含的括号是否能正确配对。2.题目分析   1.首先,我们获得用户输入的表达式,同时判断左括号和右括号的数量是否相等,如果不相等直接返回匹配失败。其中左括号包括”(“、“[”、“{”,右括号包括“)”、“]”、“}”。BOOL CountMatch(char* Stri

2020-08-07 21:36:47

栈与队列算法设计:(1)迷宫问题

目录1.题目2.题目分析 算法分析 算法实现3.参考代码4.测试结果1.题目  迷宫问题的求解是实验心理学中的一个经典问题,心理学家把一只老鼠从一个无顶盖的大盒子的入口处赶进迷宫,迷宫中设置很多隔墙,对前进方向形成了多处障碍,心理学家在迷宫的唯一出口处放置了一块奶酪,吸引老鼠在迷宫中寻找通路以到达出口。设计算法实现迷宫求解。2.题目分析 算法分析  1.这里我们使用的是栈来解决迷宫问题。   对于迷宫问题,我们常规的思维是——试错,即先随便找一条路,一直走下去,直到走到尽头,如果无法抵达出口,

2020-08-06 23:15:03

数据结构与算法2-2 栈与队列之队列

目录1.队列的概念 (1)队列的定义 (2)队列的特点 (3)队列的存储结构2.队列的基本操作 (1)顺序队  ①顺序队的定义  ②顺序队的状态 (2)链队1.队列的概念 (1)队列的定义  队列简称队,也是一种操作受限的线性表,它只允许在一端进行插入操作,在另一端进行删除操作的线性表。其中允许插入(也称入队,进队)的一端称为队尾(Rear),允许删除(也称出队)的一端称为队头(Front)。 (2)队列的特点  如下图所示,有一个有5个元素的队列,入队的顺序为a1、a2、a3、a4、a5,出队的

2020-08-02 00:00:16

数据结构与算法2-1 栈与队列之栈

目录1.栈的概念 (1)栈的定义 (2)栈的特点 (3)栈的存储结构2.栈的基本操作 (1)顺序栈  ①顺序栈的定义  ②顺序栈的状态  ③顺序栈的入栈操作  ④顺序栈的出栈操作 (2)链栈  ①链栈的定义  ②链栈的状态  ③链栈的入栈操作  ④链栈的出栈操作 (3)两种栈的性能比较3.参考代码 (1)顺序栈 测试结果 (2)链栈 测试结果1.栈的概念 (1)栈的定义  栈是一种只能在一端进行插入或删除操作的线性表。其中允许进行插入和删除操作的一端被称为栈顶(Top)。栈顶由一个称为栈顶指针的位置指

2020-07-31 23:56:19

线性表算法设计:(4)字符分类

目录1.题目2.题目分析1.题目  已知用户输入的一字符串中包含三类字符:字母,数字和其他字符。试编写算法,构造三个链表,使每个链表中只含有同一类字符。2.题目分析  怎么对字符进行分类呢?这似乎是这个问题的关键。我们知道,每个字符,都有其对应的ASCII码值,其中字符0-9对应的ASCII码为48-57,字符a-z对应的ASCII码为65-90,A-Z对应的ASCII码值为97-122,...

2020-07-30 19:05:26

线性表算法设计:(3)约瑟夫环

目录题目题目分析参考代码测试结果题目  约瑟夫(Josephus)环问题。  约瑟夫环是由古罗马的史学家约瑟夫提出来的,他参加并记录了公元66-70年犹太人反抗罗马的起义。约瑟夫作为一个将军,设法守住了裘达伯特城达43天之后。在城市沦陷后,他和40名死硬的将士在附近的一个洞穴中避难。在那里,这些将士们表决说“要投降毋宁死”。于是,约瑟夫建议每个人轮流杀死他旁边的人,而这个顺序是由抽签决定的。约瑟夫有预谋地抓到了最后一签,并且,作为洞穴中的两个幸存者之一,他说服了他原先的牺牲品一起投降了罗马。  约瑟

2020-07-29 23:28:01

线性表算法设计:(2)顺序表与单链表的逆置

目录题目题目分析(1)顺序表(2)单链表参考代码测试结果题目  设计一个算法,实现顺序表和单链表的逆置。题目分析(1)顺序表  顺序表的逆置比较容易,我们只需将顺序表对称两个元素相互交换,即一个元素和最后一个元素,第二个元素和倒数第二个元素…即可实现顺序表的逆置。这里我们使用for循环,每循环一次,一对数据完成交换,循环次数为顺序表长度/2。(2)单链表  单链表的逆置比起顺序表复杂一些,这里我们采用的是三指针法。  首先,我们定义三个临时指针,分别指向单链表的前三个结点。接着,我们将v1

2020-07-28 20:04:05

线性表算法设计:(1)顺序表元素的循环移动

目录1.题目2.题目分析3.参考代码4.测试结果1.题目  设计一个算法,对于一个存储着若干元素的顺序表,根据用户输入的移动方向和位数,实现对顺序表元素的循环移动。2.题目分析1.假设我们获得用户输入的方向和位数分别为左和3位,表示我们要将4号元素及其之后的元素全部前移3位,同时前3号元素移至数组尾部且保持顺序不变。我们想到的是创建一个临时数组,用来保存我们的前三号元素。2.接着,我们将数组的其他元素依次前移3位。3.最后,我们把临时数组里保存的前三个元素复制到顺序表的后三个位置,完成我们的

2020-07-28 18:57:07

数据结构与算法1-3 线性表之双链表

目录1.双链表的概念(1)结点(2)双链表2.双链表的操作(1)结点和头指针的定义(2)插入结点 ① 头插法 ② 尾插法 ③ 随机插入(3)查找结点(4)删除结点(5)遍历链表`3.参考代码1.双链表的概念(1)结点  在讲双链表的结构之前,我们先来思考一个问题。我们知道,单链表的结构,使得我们可以在堆中随时分配内存来满足我们的需要,且根据头指针的值,我们可以通过每个结点的指针域遍历整个链表。但是这样的遍历也存在一定的问题,即每个结点只包含指向下一结点的指针域,这就导致我们只能从前往后遍历链表,为了解

2020-07-26 22:26:56

数据结构与算法1-2 线性表之单链表

目录1.单链表的概念(1)结点(2)单链表2.单链表的特点(1)带头结点的单链表(2)不带头结点的单链表3.参考代码(1)结点和头指针的定义(2)单链表的遍历(3)求单链表的表长(3)向单链表中插入结点 ① 头插法1.单链表的概念(1)结点  在链表结构中,构成链表的基本单位就是结点,每个结点结构体一般包括数据域和指针域。在数据域中,包含用户想要存储的每个单位的信息;指针域则是存储下一结点的指针,由此才能将若干结点连接成为链表。结点的结构一般如下所示:         图1.结点的结构图(2)单

2020-07-17 20:25:18

数据结构与算法1-1 线性表之顺序表

数据结构与算法-01 线性表之顺序表1.顺序表的概念  顺序表,就是把若干个元素按照其逻辑顺序,依次存储到从指定的存储位置开始的一块连续的存储空间中。其中,线性表中的第一个元素的存储位置就是指定的存储位置,第i+1个元素的存储位置紧接在第i个元素的存储位置的后面,这样元素的存储方式就构成了顺序表。2.顺序表的特点3.参考代码(1)顺序表的初始化(2)顺序表的遍历(3)查找表中的元素(4)向表中增加元素(5)从表中删除元素...

2020-07-16 16:29:44
勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。