一、题目 用一个数组实现三个(或多个)栈二、解答 用一个数组实现三个乃至多个栈,如果想使用一个数组构造两个栈的思想则行不通; 考虑使用静态链表,数组结点中存在两个域,关键字域与指示栈的前驱的游标,则可以使三个栈可以用一个数组表示; ADT的关键术语: Capacity: 数组的容量; S...
分类:
其他好文 时间:
2014-10-05 23:21:59
阅读次数:
216
一、二叉树 1、定义 二叉树是一棵树,其中每个节点都不能多于2个儿子。 2、实现 typedef struct TreeNode *PtrToNode;typedef PtrToNode Tree;typedef char ElementType;struct TreeNode{ ElementTy...
分类:
其他好文 时间:
2014-09-01 13:49:03
阅读次数:
157
一、队的概念 队列也是一种表,但是是一种受限的表,只允许从一端插入,另一端山粗的表。 二、队列的数组实现 #define QMAXSIZE 100typedef int Position;typedef int QElement;typedef struct queue{ QElement Els[...
分类:
其他好文 时间:
2014-08-21 18:53:24
阅读次数:
186
一、栈ADT是what?1、定义 栈,是限制插入和删除都只能在一个位置上进行的表。2、图示 3、栈的基本功能(1)是否为空(2)进栈(3)出栈(4)清空(5)取栈顶二、栈的链表实现
分类:
其他好文 时间:
2014-08-17 16:43:42
阅读次数:
183
今天简单学习了下链表,待后续,会附上一些简单经典的题目的解析作为学习的巩固首先要了解链表,链表其实就是由一个个结点构成的,然后每一个结点含有一个数据域和一个指针域,数据域用来存放数据,而指针域则用来存放下一个结点的地址。1、先给出结点的定义。typedef struct Node *PtrToNod...
分类:
其他好文 时间:
2014-08-08 12:34:55
阅读次数:
212
一、对算法分析方法的最简单的理解和使用方法1、首先大家可能一般会被那些数学的概念搞晕,其实简单理解下来,就是假设任何语句执行的效率都是一样的,所以设定每一个语句的执行时间都是一个时间单位,那么只要计算这个程序到底执行了多少语句,就可以算出其时间复杂度。2、其次就是我们要明白,我们是个估算,所以可以进...
分类:
其他好文 时间:
2014-08-08 01:41:35
阅读次数:
336
在排序算法中,简单排序主要有三种,分别为冒泡排序、选择排序、插入排序,学习理解好这三种排序算法有助于进一步研究数据结构与算法分析。下面,简单地谈一谈冒泡排序、选择排序、插入排序的原理及区别。冒泡排序原理:1、比较相邻的元素。如果前一个比后一个大,它们就交换。2、每对元素都要进行同样的动作,从后往.....
分类:
其他好文 时间:
2014-07-19 16:32:37
阅读次数:
203
浅谈尾递归 2013-02-10 14:12:57 在《数据结构与算法分析:C描述》(Data Structures and Algorithm Analysis In C)的第三章中,以打印链表为例,提到了尾递归(tail recursion)并指出了尾递归是使用递归极其不当的例子,它指出虽然编译...
分类:
其他好文 时间:
2014-07-18 08:11:35
阅读次数:
162
2014.07.08 22:43简介: “搜索”与“剪枝”几乎是如影随形的。此处的“搜索”指的是带有回溯算法的深度优先搜索。 在之前的“Minimax策略”中我们给出了一个三连棋的程序,运行后你就知道计算一步棋要花多少时间。 为了计算最优的一步棋,我们可能需要递归9万多次。如果毫无疑问这种阶乘...
分类:
编程语言 时间:
2014-07-12 13:01:38
阅读次数:
728
2014.07.08 00:08简介: 本章里没有讲到这个内容,是我在看书的时候回忆起了自己被问过的一道面试题。当时觉得特别难,现在回想起来才知道是自己无知。 如果有50颗石子,两人轮流拿。每次可以从其中拿走1,2,4或者8颗。谁拿走了最后一颗,谁就输了(输或者赢根本无所谓)。 请问,先手或者...
分类:
编程语言 时间:
2014-07-08 12:42:58
阅读次数:
340