自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 求简单迷宫的路径

简单迷宫设置一个简单迷宫。(6*6) 定义迷宫入口。   迷宫入口要求:必须是边界。 3.开始走迷宫   a. 走当前步: 当前步入栈,将当前步标记为2   b. 判断当前栈顶元素是否是出口(是边界却不是入口),如果是就返回,若不是之星下一步。   c.取栈顶元素为当前步:   d.走下一步:     假设优先顺序为上,左,右,下。   上:(横坐...

2018-08-26 21:54:38 422

原创 两个队列实现一个栈

  关于两个栈实现一个队列的问题:两个栈实现一个队列 这篇博客我们讲两个队列实现一个栈。栈:后进先出 队列:先进先出 分析:   入栈:   哪一个队列有元素便入哪一个队列。   出栈:   返回栈顶元素:   栈的大小  两个队列的大小之和。   栈判空  两个队列均为空。代码实现:   设置一个栈由两个队列组成。队列为不带头结点的单链表,有两个指针,分...

2018-08-26 19:43:09 267

原创 一个数组实现两个栈(共享栈)(扩容)

  一个数组实现两个栈的具体方法:一个数组实现两个栈(共享栈)但是上述方法的缺陷是数组的大小是恒定的,当数组满的时候就无法进行入栈操作。这篇博客我们将讲一下数组如何扩容?  实现方法:一个数组实现两个栈=====>>下标为0的位置为栈1的栈底,栈2的栈底在下标最大的位置上。栈1向左扩展,栈2向后扩展。若数组已满则增容。   首先定义一个共享栈的结构体:#define ...

2018-08-26 18:23:01 1500 3

原创 使用两个栈实现一个队列

题目:使用两个栈实现一个队列。 栈:后进先出。 队列:先进先出。 入队列:   直接入栈1。 出队列: 返回队列的队尾元素: 返回队列的队头元素: 队列为空:   栈1为空&&栈2为空。 队列元素个数:   栈1的元素个数+栈2的元素个数。参考代码: 设置一个队列由两个栈组成: typedef struct Queue{

2018-08-25 08:46:48 3298

原创 一个数组实现两个栈(共享栈)

题目:   一个数组实现两个栈。 方法1:   下标为0的位置为栈1的栈底,下标为1的位置为栈2的栈底,栈1的元素存放在下标为偶数的位置上,栈2的元素放在下标为奇数的位置上。   如上图所示的数组:若栈1有一个元素 2,栈2有6个元素 1,2,3,4,5,6,下标为0的位置为 2,下标为1,3,5,7,9的位置分别为1,2,3,4,5。6无法插入但数组中还有很多剩余的空间。。可见该方法会...

2018-08-23 20:10:52 11451 1

原创 逆波兰表达式(后缀表达式)的计算

   后缀表达式计算时,所有运算按照运算符出现的顺序,严格从左到右,每个操作符取前两个操作数进行运算,运算后的结果仍然作为下次的操作数。 那如果已知后缀表达式,如何求值:    举一个例子: 代码:#include<stdlib.h>#include<assert.h>#include<string.h>

2018-08-17 21:31:39 5842 3

原创 括号匹配问题(栈的应用)

栈:  栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除等操作。   没有任何元素的栈称为空栈。   栈又称为 后进先出 的线性表。 括号匹配问题:   算法思路:   一个关于括号匹配的例子: 封装一个静态栈: #define Max 20#define DataType char typedef struct Stack{ DataType...

2018-08-17 18:10:34 836

原创 判断两个链表是否相交?若相交求出交点?(两个链表均带环)

关于链表相交的问题如果两个链表均不带环 判断两个不带环单链表是否相交?若相交求交点如果一个链表带环,一个链表不带环。两个链表不可能相交! 如果两个链表均带环:(有以下两种相交的情况) 如何判断链表是否带环,以及如何求环的入口点判断两个带环单链表是否相交:   分别判断两个单链表p1,p2是否带环,返回快慢指针的交点(此交点必在环内)meet1,meet2,一个指针不动,另一...

2018-08-16 19:23:55 565

原创 单链表的冒泡排序

单链表的冒泡排序   设置三个指针tail,p,cur;p和tail用于控制外循环的次数,cur用于内循环。排序开始前遍历一次单链表将tail指向尾结点的指针域,即NULL。cur和p均指向头结点。比较cur->data与cur->next->data的大小,若前者大于后者则交换;否则不交换,之后cur指针右移,继续比较cur->data与cur->next-...

2018-08-15 18:15:07 21335 8

原创 查找链表的倒数第k个结点(只能遍历一次结点),删除链表的倒数第k个结点。

查找链表的倒数第k个结点   方法:设置两个指针fast,slow        让快指针先走k步,随后两个指针一起向后移动,当快指针为空时,慢指针指向的结点即为链表的倒数第k个结点。 linklist * FindLastKNode(linklist *head,int k){ linklist *fast = head; linklist *slow = head; ...

2018-08-15 16:34:11 778

原创 复杂链表的复制(链表的每个结点,有一个next指针指向下一个结点,还有一个random指针指向这个链表中的一个随机结点或者NULL)

举一个复杂链表的例子: 首先我们需要创建一个复杂链表:  1. 要创建链表首先需要一个结构体:(结构体成员须包括数据,next指针,以及random指针)typedef struct node{ DataType data; struct node* next; struct node* random;}Clinklist;创建如上图所示的复杂链表...

2018-08-14 10:09:30 2382

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除