数据结构与算法
文章平均质量分 64
xanarry
这个作者很懒,什么都没留下…
展开
-
c语言高精度大整数加法运算
#include#include#include#include#define MAX_LEN 2000//仅限正整数相加 int an1[MAX_LEN + 10];int an2[MAX_LEN + 10]; // 定义两个整形数组 char szLine1[MAX_LEN + 10];char szLine2[MAX_LEN + 10]; //定义两个原创 2014-03-06 15:18:55 · 3584 阅读 · 0 评论 -
创建一个有序的链表
创建有序链表的基本思路就是在插入一个新节点之前,先按有序查找到新节点应该插入的位置,然后再插入!//代码实现环境:windows 7 32bit + MinGW + Sublime Text 3#include <iostream>using namespace std;struct Node{ int elem; Node *next;...原创 2014-06-05 22:50:04 · 6916 阅读 · 4 评论 -
队列-链式结构-C++实现
教科书告诉我们所先进先出的结构叫做队列,没错,就是队列,正如排队一样了,出队永远在队头,入队永远在队尾,我们要频繁对这两个点进行操作,那么应该选择什么样的结构来实现呢?数组,特点:实现简单,容量有限,删除一次要进行一定数量元素的移动,所有效率有待提高。当然可以循环使用数组空间来避免移动元素带来的开销,但是呢,还是不如链式结构来得直观。 本文使用一个双向链表来实现队列,用两个固定的原创 2015-04-16 22:08:42 · 2431 阅读 · 0 评论 -
c++实现链式结构的栈
链式结构的栈的主题是一个单向链表,因为只有一个可访问的头并且可以轻松在头部进行插入和删除,因为栈的操作也都是在顶部,所以可以根据这一特性用链表的头部表示栈的顶部实现一个链式结构的栈,并且不存在大小的限制。更多栈的特性不做过多描述。 我们使用带头结点的链表,头结点的数据区就储存栈的元素个数,然后实现链表的头部插入函数模拟栈的push,实现链表的删除头部元素模拟栈的pop。原创 2015-04-16 21:38:01 · 1090 阅读 · 0 评论 -
使用栈判断括号匹配
判读括号是否匹配的方法比较简单,假如给定一系列的括号,判断是否全部都匹配我们肯定是将能匹配的括号全部删除,如果最后没有剩下任何括号那么肯定就是匹配了;如有剩下的左括号或者右括号说明不匹配。 详见代码描述:#include #include using namespace std;int main(int argc, char const *argv[]){ s原创 2015-04-17 20:42:57 · 3138 阅读 · 0 评论 -
拓扑排序
关于拓扑排序我有个印象就是最开始是个(同专业,不同大学)高中同学问我能不能帮她写个拓扑排序。那时我还是不会的,当然,知道放假后假期我才会了。首先介绍一下什么是拓扑排序吧,通常我们描述的排序是按数据的大小排序,并且各种算法,各种奇巧淫技。拓扑排序最大的区别就是它并不是按照数据的大小排序的,我把理解为是对一种先后关系之间的排序,举个例子。 假如你对你的女神表白了,很不幸,女神是学原创 2015-04-17 11:12:08 · 683 阅读 · 0 评论 -
二叉线索树
对于普通二叉树, 对于最底部的结点和只有一个孩子的结点, 我们通常将其没有元素的左右指针指向NULL. 对于线索树, 简而言之就是将这些NULL指针再次利用, 对于空闲的左指针, 将其指向该结点的前驱结点, 反之, 对于空闲的右指针, 将其指向该节点的后驱结点, 完成线索后的二叉树看上去是这样的 上图是一个中序二叉线索树, 直线是原始的二叉树指针, 曲线则是我们添加的线索.对于线索二叉树的每个结点原创 2016-02-27 20:22:48 · 919 阅读 · 0 评论 -
使用Python list通过递归实现一个表达式计算器
因为python list可以同时保存不同的数据, 并且提供丰富的操作方案, 想想可以同时把数字和运算符号都保存到列表中, 于是就诞生了使用列表写个表达式计算器, 思路就是同时将数字和运算符保存到列表, 然后从左向右计算所有乘除号两边的数值, 然后删除两个操作数和一个运算符, 再把运算结果保存到刚才计算的位置, 然后再第二次循环计算剩下的加减法运算, 最有元组只剩下一个数, 输出即结果, 检查符号是原创 2016-02-27 20:37:07 · 1930 阅读 · 2 评论 -
AVL树的c++实现
//avl树中的元素一定是唯一的#include <iostream>using namespace std;struct Node{ int data;//数据 Node *left;//左指针 Node *right;//右指针 int height;//当前点的树高};int height(Node *root){ if (!root)//nu原创 2016-02-27 21:11:09 · 430 阅读 · 0 评论 -
c++使用顺序结构实现栈
关于栈的介绍在此不用多说了,想必在原创 2014-06-05 22:35:24 · 744 阅读 · 0 评论 -
计算fibonacci数列logn的算法
计算fibonacci数列通常有两种方法,非常符合fibonacci数列公式表达的方法就是使用递归,当x = 1或x = 2时,fab(x) = 1; x > 2时,fac(x) = fac(x - 1) + fac(x - 2);int fibonacci(int n){ if (n <= 2) return 1; else return f原创 2015-04-10 10:57:18 · 1354 阅读 · 0 评论 -
循环链表的实现
#include #include typedef struct node{ int data; struct node *next;}NODE;NODE * create(int x);void display(NODE *head, int x);int main(){ int x; NODE *p; printf("请输入循环链表节点数量:"); scanf(原创 2014-05-01 22:31:34 · 640 阅读 · 0 评论 -
猴子选大王(约瑟夫环问题)
#include using namespace std;struct Node//链表节点结构体{ int n;//节点数据 Node *next;//一个结构体指针};Node * Create(const int);//声明创建链表的函数void Conduct(Node *, const int ,const int);//声明筛选结果的函数void free(Nod原创 2014-05-11 22:02:37 · 920 阅读 · 0 评论 -
创建一个有序链表
#include using namespace std;struct Node//节点结构体{ int n; Node *next;};void Insert(Node *H, int n);//有序插入节点函数void Show(Node *H);//输出链表int main(int argc, char const *argv[]){ int n; Node *原创 2014-05-19 17:12:21 · 3182 阅读 · 0 评论 -
使用栈实现判断输入的符号是否匹配
/* date: 2014/6/5 time: 20:07 运行环境:windows 7 + MinGW + Sublime_text_3 注意:此代码不能判断符号相互交叉的匹配,比如({)},只能测试{([])({})}类型的*/#include #include #include using namespace std;struct Stack{ int size;原创 2014-06-05 22:17:04 · 2271 阅读 · 0 评论 -
队列的简单介绍及代码实现
队列的结构就是先进先出,经相当于原创 2014-06-06 14:57:55 · 834 阅读 · 0 评论 -
C++ STL 使用总结
相对于c,c++的标准模板库也就是STL通过了很多丰富的数据结构和算法,熟练运用能给编程带来极大的方便,下面介绍STL中常用数据结构的简单用法原创 2015-03-18 23:40:12 · 502 阅读 · 0 评论 -
高精度大整数类
寒假写的高精度大整数类,在此分享给大家,方法就是将数字转为字符串,然后加减乘过程都是模拟列竖式运算,除法方法神奇一点,粗看代码可能看不懂除法的运算,准确的说是取整,后面我将专门写一篇文章介绍大整数的除法即取整运算的文章#include <iostream>#include <cstring>#include <string>using nam...原创 2015-03-20 23:23:51 · 755 阅读 · 2 评论 -
使用c++构建一个二叉树
How to create a binary tree by c++ The binary tree is a fundamental data structure used in computer science. The binary tree is a useful data structure for rapidly storing sorted data and rapidly翻译 2014-11-09 13:18:46 · 4739 阅读 · 0 评论 -
Trie树的C++实现
Trie树又叫做前缀树或者字典树, 通过Trie树能够实现字典的高速查找O(单词长度)级别, 不仅能够实现完全匹配查找还能够实现前缀查找,即输入一个字符串, 查找出所有以这个字符串为前缀的单词.下图是包含{“about”, “to”, “tea”, “boring”, “any”, “ted”, “ten”, “i”, “in”, “inn”}的Trie树的结构 从图中看出, Trie树跟结点是空原创 2016-02-28 12:19:08 · 572 阅读 · 0 评论