
头疼的算法与数据结构
文章平均质量分 88
奋斗的小程序员
嵌入式爬坑中......
展开
-
动态规划法--求数组中最大子集合的和
动态规划法求解子数组最大的和原创 2017-01-03 22:53:13 · 8759 阅读 · 2 评论 -
头疼的算法与数据结构——八皇后问题(递归法)
介绍八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当 n = 1 或 n ≥ 4 时问题有解。八皇后问题最早是由国际原创 2017-04-13 22:59:29 · 1334 阅读 · 0 评论 -
头疼的算法与数据结构——二维数组中的查找
有下面一个面试题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。例如在数组a中:int a[4][4]={ {1,2,8,9}, {2,4,9,12}, {4,7,10,13}, {6,8,11,原创 2017-04-05 15:00:25 · 794 阅读 · 0 评论 -
头疼的算法与数据机构——判断链表是否有环
判断链表是否有环的:如图,如果单链表有环,则在遍历时,在通过6之后,会重新回到3,那么我们可以在遍历时使用两个指针,看两个指针是否相等。方法一:使用p、q两个指针,p总是向前走,但q每次都从头开始走,对于每个节点,看p走的步数是否和q一样。如图,当p从6走到3时,用了6步,此时若q从head出发,则只需两步就到3,因而步数不等,出现矛盾,存在环方法二:使用p、q原创 2017-04-12 20:38:17 · 1067 阅读 · 0 评论 -
头疼的算法与数据结构——约瑟夫环
一:约瑟夫环简介据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus原创 2017-03-13 13:58:18 · 808 阅读 · 0 评论 -
头疼的算法与数据结构——双向循环链表
一:双向循环链表的简介双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。双链表的结构定义如下:struct node{ int data;//数据域 struct node* next;//后继 struct n原创 2017-03-12 18:27:10 · 6450 阅读 · 0 评论 -
头疼的算法与数据结构——链表实现栈
实现栈的功能可以用数组和链表,这里我用链表写了一个栈。实现主要思想:(1)因为栈时后进先出的,所以我们在使用链表压栈的时候,将要压栈的那个元素放到头节点。(2)出栈就是删除头节点,因为你后面插入的节点在头节点。代码实现:#include #include struct node{ int data; struct node *next;};typ原创 2017-03-12 18:06:15 · 549 阅读 · 0 评论 -
头疼的算法与数据结构——红黑树
1. 红黑树的特性Red-Black Tree ( RBT)也是一种自平衡二叉树,其统计性能要好于 AVL树 。它是在1972年由 鲁道夫·贝尔 发明的,它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的。[参考Wiki]一般的,红黑树同时原创 2017-03-12 13:25:51 · 1404 阅读 · 0 评论 -
头疼的算法与数据结构——详解插入排序法
插入排序我觉得最像线性表的插入操作:先找到要插入的位置,然后向后移动。代码如下:#include void insertsort(int array[], int len){ int i = 0, j = 0, k = -1,temp=-1; for (i = 1; i<len; i++) { k = i;//待插入位置 temp = array[k];原创 2017-02-26 20:22:44 · 1766 阅读 · 2 评论 -
头疼的算法与数据结构——循环链表详解
一.循环链表简介:1.概念:循环链表是另一种形式的链式存贮结构。它的特点是表中最后一个节点的指针域指向头节点,整个链表形成一个环。2.分类:(1)单循环链表——在单链表中,将尾节点的指针域NULL改为指向头节点即可。(2)多重链的循环链表——将表中节点链在多个环上。3.重点:①循环链表中没有NULL指针。涉及遍历操作时,其终止条件就不原创 2017-03-09 23:47:26 · 3026 阅读 · 0 评论 -
头疼的算法与数据结构——详解选择排序法
排序在我们编程中用的很多,排序方法也很多,选择合适的排序方法,会节约程序运行时间。传统的选择排序法,是冒泡排序法演变而来的:#include void selectsort(int array[],int len){ int i = 0, j = 0, k = 0; for(i=0;i<len;i++) for (j = 0; j < len; j++) { if (原创 2017-02-26 16:20:00 · 2045 阅读 · 0 评论