常用算法结构
文章平均质量分 70
lycnjupt
这个作者很懒,什么都没留下…
展开
-
二叉树算法总结
// example-13.7.1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include using namespace std;//二叉树的节点类class BinTreeNode{private: int data; BinTreeNode *left,*right;public:转载 2015-07-31 12:18:44 · 449 阅读 · 0 评论 -
双链表创建
typedef struct student{ int data; struct student*next; struct student*pre;}dnode;dnode*creat(){ dnode *head, *p, *s; int x, cycle = 1; head = (dnode*)malloc(sizeof(dnode)); p = h原创 2015-07-28 15:20:27 · 453 阅读 · 0 评论 -
递归二叉树遍历
二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有前、中、后三种遍历方式,因为树的本身就是用递归定义的,因此采用递归的方法实现三种遍历,不仅代码简洁且容易理解,但其开销也比较大,而若采用非递归方法实现三种遍历,则要用栈来模拟实现(递归也是用栈实现的)。下面先简要介绍三种遍历方式的递归实现,再详细介绍三种遍历方式的非递归实现。一、三种遍历方式转载 2015-07-06 17:12:47 · 470 阅读 · 0 评论 -
二叉树基本操作
二叉树作为一种非常重要的数据结构,今天对其做简单的回顾1、二叉树的定义[cpp] view plaincopytypedef char ElementType; typedef struct BiTreeNode { ElementType data; struct BiTreeNode* lchi转载 2015-07-31 13:42:47 · 465 阅读 · 0 评论 -
队列操作
队列的定义及基本运算1、定义 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表 (1)允许删除的一端称为队头(Front)。 (2)允许插入的一端称为队尾(Rear)。 (3)当队列中没有元素时称为空队列。 (4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。转载 2015-07-30 16:01:55 · 507 阅读 · 0 评论 -
两个栈实现队列的pop与push操作
// example-13.5.4.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#includetypedef struct Node{int data;struct Node *pNext;}NODE,*PNODE;typedef struct Sta转载 2015-07-30 21:20:23 · 690 阅读 · 0 评论 -
快速排序
#include using namespace std; void Qsort(int a[], int low, int high){ if(low >= high) { return; } int first = low; int last = high; int key = a[first];/*用字表的第一个记录原创 2015-07-31 15:44:26 · 321 阅读 · 0 评论 -
算法复杂度计算
一、概念时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数)比如:一般总运算次数表达式类似于这样:a*2^n+b*n^3+c*n^2+d*n*lg(n)+e*n+fa ! =0时,时间复杂度就是O(2^n);a=0,bO(n^3);a,b=0,cO(n^2)依此类推eg:(1) for(i=1;i //循环了n*n次,当然是O(n^2) f转载 2015-08-10 10:48:02 · 423 阅读 · 0 评论 -
数据结构常用排序算法总结
排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。 我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这张图来思考几个问题。 上面的这张图来自一个PPT。它概括了数据结构中的所有常见转载 2015-09-01 19:25:38 · 427 阅读 · 0 评论 -
栈的操作
#include "stdafx.h" #include #include #define OK 1 #define TRUE 1 #define ERROR 0 #define FALSE 0 #define overflow -2 #define STACK_INTT_SIZE 100 #define STACK_INIT_INCREMEN转载 2015-07-30 19:53:22 · 557 阅读 · 0 评论 -
单链表逆序,直接翻转指针!!
单链表逆序 第二个题目是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的节点存储空间做中转,会得到一个比较低的分数。如何在不使用额外存储节点的情况下使一个单链表的所有节点逆序?我们先用迭代循环的思想来分析这个问题,链表的初始状态如图(1)所示:图(1)初始转载 2015-07-28 12:11:48 · 5554 阅读 · 2 评论 -
两个栈实现队列与两个队列实现栈
// testxxx.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"//#include//#include//#include//using namespace std;////class CQueue//{//public:// CQueue(void);// ~CQueue(void);// void appendtail(co转载 2015-10-26 20:42:17 · 352 阅读 · 0 评论