自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树的层序遍历

/*二叉树的层序遍历*/typedef struct TreeNode *BinTree;typedef BinTree Position;struct TreeNode{ ElementType Data; BinTree Left; BinTree Right;};/* 二叉树遍历的核心问题:二维结构的线性化 访问左

2017-11-20 15:04:41 292

原创 二叉树的遍历(非递归实现)

/*二叉树的遍历-非递归(堆栈实现)*/typedef struct TreeNode *BinTree;typedef BinTree Position;struct TreeNode{ ElementType Data; BinTree Left; BinTree Right;};/*中序遍历的非递归遍历算法*/void InO

2017-11-20 15:03:52 250

原创 二叉树的遍历(递归实现)

/*二叉树的遍历-递归实现*/typedef struct TreeNode *BinTree; typedef BinTree Position; struct TreeNode{ ElementType Data; BinTree Left; BinTree Right; };/* 先序遍历 访问根结点

2017-11-20 15:03:09 377

原创 二叉树的定义,性质及存储

二叉树的定义二叉树是一个有穷的结点集合 这个集合可以为空 若不为空,则它是由根结点和称为其左子树TL和右子树TR的两个不相交的二叉树组成 二叉树有五种基本形态:空结点,只有一个根结点,只有根结点和左子树,只有根结点和右子树,有根结点和左子树及右子树 注:二叉树的子树有左右顺序之分 特殊二叉树:1.斜二叉树(Skewed Binary Tree):所有二叉树树只有左儿子或者只

2017-11-20 15:02:13 679

原创 树的定义及术语

树的定义n个结点构成的有限集合,当n=0时,称为空树 树有一个称为根Root的特殊结点,用r表示 其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm。其中每个集合本身又是一棵树,称为原来树的子树(SubTree) 子树是不相交的 除了根节点以外,每个结点有且仅有一个父结点;一棵N个结点的树有N-1条边 树的术语结点的度(Degree):结点的子树个数

2017-11-20 14:58:38 310

原创 静态查找方法(顺序查找与二分查找)

/*静态查找的几种方法*/#include <stdio.h>#define MaxSize 20typedef struct LNode *List;struct LNode{ ElementType Data[MaxSize]; int length;}; /*顺序查找(Sequential Search),采用了建立哨兵的查找思想,最好查找复杂度O(1),最坏为O(n)

2017-11-20 14:55:36 835

原创 单链表实现队列链式存储

/*用单链表实现队列的链式存储*/ /* fron指向单链表的头结点,rear指向单链表的尾结点 因为单链表的头结点做插入,删除都比较方便,但是尾结点做插入方便,删除不方便 故我们让front指向头结点利于做删除操作,让rear指向尾结点利于做插入操作 */#include <stdio.h>#include <malloc.h> #define ElementType i

2017-11-20 14:53:05 6838

原创 循环队列的顺序存储实现

/*用数组实现队列的顺序存储*/#include <stdio.h>#define MaxSize 20#define ElementType int#define ERROR -1 struct QNode{ ElementType Data[MaxSize]; int front; int rear;}; typedef struct QNode *Queu

2017-11-20 14:51:55 296

原创 堆栈的单链表实现

#include <stdio.h>#include <malloc.h>#define ElementType int/*堆栈的链式存储实现*/ typedef struct SNode *Stack;struct SNode{ ElementType Data; struct SNode *Next;}; Stack CreateStack(){ //构造一个堆

2017-11-20 14:50:58 455

原创 一个数组实现两个堆栈

/*堆栈的定义及入栈,出栈操作#define MAXSIZE 100typedef struct SNode *Stack;typedef struct SNode{ ElementType Data[MAXSIZE]; int Top;}; //入栈操作 void Push(Stack PtrS,ElementType item){ if(PtrS->Top==MA

2017-11-20 14:50:02 578

原创 十字链表存储稀疏矩阵

/*广义表的定义 typedef struct GNode *GList;struct GNode{ int Tag; //标志域:0表示结点是单元素,1表示结点是广义表 union{ //子表指针域SubList与单元素数据域Data复用,即共用存储空间 ElementTtype Data; GList SubList; }URegi

2017-11-18 21:39:55 1067

原创 链表

#include <stdio.h>#include <malloc.h> typedef struct LNode *List;struct LNode{ int Data; List Next;};struct LNode L;List PtrL;/*用链表遍历的方法求表长,时间复杂度为O(n)*/ int Length(List PtrL){ List p

2017-11-18 20:38:16 130

原创 顺序表

#include <stdio.h>#include <malloc.h>#define MAXSIZE 20 typedef struct LNode *List;struct LNode{ int Data[MAXSIZE]; int Last;}; struct LNode L;List PtrL;List MakeEmpty(){ List PtrL;

2017-11-18 20:37:32 176

原创 输出精度问题

#include <stdio.h> int main() { int a=1234; float b=123.456;double c=12345.54321;printf("\n%2d,%2.1f,%2.11f",a,b,c);}/* %d 有符号10进制整数 %i 有符号10进制整数 %o 有符号8进制整数 %u 无符号10进制整数 %x 无符号的16进

2017-11-18 20:31:41 558

原创 两个多项式相加及相乘

#include <stdio.h>#include <malloc.h> typedef struct PolyNode *Polynomial; struct PolyNode{ int coef; int expon; Polynomial link; }; void Attach(int c,int e,Polynomial *pRear) //pRear是指

2017-11-18 20:27:23 3068

原创 最大子列和(算法复杂度优化)

#include <stdio.h>#include <math.h>#include <time.h>#define MAXK 1e7clock_t start,stop;double duration;/*一种复杂度为O(n^3)的暴力解法*/ int MaxSubseqSum1(int A[],int N) { int ThisSum,MaxSum=0; int i,j

2017-11-18 20:23:18 286

原创 计算多项式的值(秦九昭算法,clock()函数的使用)

//假设多项式f(x)=0*x^0+1*x^1+2*x^2+...+9*x^9#include <stdio.h>#include <time.h>#include <math.h>clock_t start,stop;double duration;#define MAXN 10//多项式最大项数,即多项式阶数+1 #define MAXK 1e7//被测函数最大重复调用次数 //一

2017-11-18 20:15:00 1180

原创 PrintN的循环执行和递归执行

/*printN是一个打印从1-N所有数字的函数*/#include <stdio.h>/*循环执行*/void printn(int N){ int i; for(i=0;i<N;i++){ printf("%d\n",i); } return;}/*递归执行*//*递归执行代码简单但是占用空间资源过大,若递归调用的次数N是较大数量级则不适合用递归*/void

2017-11-18 20:09:56 4094

转载 递归与尾递归

1、递归  关于递归的概念,我们都不陌生。简单的来说递归就是一个函数直接或间接地调用自身,是为直接或间接递归。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。      用递归需要注意以下两点:(1) 递归就是在过程或函数里调用自身。(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。递归一般

2017-11-18 19:21:47 361

空空如也

空空如也

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

TA关注的人

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