自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

凤栖梧桐

大家一起进步!!!

  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 快速排序

//快速排序之获得点int QSort(int *a, int i, int j){ a[0] = a[i];//将与之比较的点 while (i<j) { while (i<j&&a[0]<a[j])//找到比他小的第一个点 { j--; } if (a[0] > a[j])//如果

2017-07-28 16:05:51 176

原创 折半插入排序

折半插入的本质上,依旧是插入排序,只是在寻找插入点的时候将使用折半查找,用以减少查找数据的次数。数组的第0个元素不在排序序列中,用来保存将要插入的数据。//折半直接插入排序void BinsrySort(int *a, int length){ //第0号元素不使用 for (int i = 1; i < length; i++) { a[0] = a[i

2017-07-28 15:17:42 227

原创 直接插入排序

//直接插入排序void InsertSort(int *a,int length){//0,11,1,2,3,7,8,9,4,5,6,10 //0号元素不使用 for (int i = 2; i < length; i++) { a[0] = a[i]; int j = i - 1; while(j>0&&a[0]<a[j

2017-07-28 14:59:47 149

原创 折半查找

查找 5 成功查找失败high比low小,则查找失败//折半查找typedef struct{ int num;}student;typedef struct{ int length; student st[MAX + 1];}student_t;int Binary_Search(student_t st_t, student st){ int lo

2017-07-26 18:00:45 175

原创 线性查找

//线性查找//将第0个元素,做为防止越界的标记//从后往前查typedef struct { int num;}student;typedef struct{ int length; student st[MAX+1];}student_t;int search1(student_t st,int flag){ int i = st.length;

2017-07-26 17:47:30 280

原创 二叉排序树创建、查找、删除

一、二叉树的结构体结构typedef struct tree{ int date; tree *lchild; tree *rchild;}tr_t;二、二叉排序树的创建void creat_BStree(tr_t ** tr,int num){ if ((*tr) == NULL) { (*tr) = (tree*)malloc(s

2017-07-26 17:46:09 414

原创 输出二叉树中叶子结点的个数

int leaf(tree * root){ if (root == NULL)//如果根节点为空,则返回空 return 0; else if (root->lchild == NULL&&root->rchild == NULL)//如果左孩子和右孩子同时为空,则叶子节点的数加+1 return 1; else retur

2017-07-24 10:19:16 7702 3

原创 二叉树按层遍历输出——双指针法(图解)

(一)申请一个vector的容器vt。 (二)设置两个指针(当然,不是必须是指针形式的指针,可以用数组的下标代替,只是采用指针这个思想),这两个指针一个指向当前访问的节点——cur(标志目前访问的是哪个节点),另外一个指向当前层访问节点的最后一个节点——end(标志当前层访问结束)。 (三)对两个指针的初始化:首先在根节点不为NULL的情况下,将根节点装入容器,然后cur从0开始,end等于容器

2017-07-24 09:59:41 1321

原创 判断两棵二叉树是不是相同

(一)在左右节点不可以旋转的时候://核心代码,先确定根节点是否相同,再判断左孩子和右孩子是否相同。bool equal(tree *root ,tree *root1){ if (root == NULL&&root1 == NULL) { return 1; } if (!root || !root1 ) { retur

2017-07-23 19:24:58 515

原创 哈夫曼树

(一)基础知识 路径:从一个结点到另一个结点之间的分支序列。 路径长度:从一个结点到另一个结点所经过的分支数目。 结点的权:根据应用的需要可以给树的结点赋权值 带权路径长度:从根到该结点的路径长度与该结点权的乘积。 树的带权路径长度: 树中所有叶子结点的带权路径之和。 哈夫曼树:由n个带权叶子结点构成的所有二叉树中带权路径长度最短的二叉树。又叫最优二叉树。(二)有数据为{ 22,10,4

2017-07-22 21:48:42 454

原创 由前序遍历和中序遍历,求后序遍历

若已知一棵二叉树的前序序列是 B E F C G D H, 中序序列是 F E B G C H D ,则它的后序序列_。前序遍历:先遍历根节点,再遍历左孩子,最后遍历右孩子。 中序遍历:先遍历左孩子,再遍历根节点,最后遍历右孩子。所以,遍历的序列也是这个规律。首先,看前序遍历中B节点,它是第一个节点,也是根节点;再看中序遍历,B节点将中序遍历分为两部分,第一部分为FE,第二部分为GCHD。FE是

2017-07-21 20:00:40 708

原创 二叉树

一、二叉树的结构typedef struct tree{ char date; tree *lchil; tree *rchil;}tree;二、二叉树的创建void create_tree(tree **root){//if (root != NULL) { char put = ' '; scanf("%c", &put);

2017-07-20 17:44:16 141

原创 括号{}()[]匹配

使用栈来实现#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX 100typedef struct elem{ int date;};typedef struct LinkStack{ elem elem_date; LinkStack *next;}LinkStack;//初始化vo

2017-07-20 15:02:33 286

原创 全部输入是小括号的字符串,判断是否匹配

#include<stdio.h>#include<stdlib.h>#define MAX 50bool pipei(char * a){ int i = 0; int result = 0; while (a[i] != '\r'&&a[i]!='\n') { if (a[i] == '(') { res

2017-07-20 14:23:58 1357 1

转载 卡特兰数证明

1.饭后,姐姐洗碗,妹妹把姐姐洗过的碗一个一个地放进碗橱摞成一摞。一共有n个不同的碗,洗前也是摞成一摞的,也许因为小妹贪玩而使碗拿进碗橱不及时,姐姐则把洗过的碗摞在旁边,问:小妹摞起的碗有多少种可能的方式? 2.给定n个数,有多少种出栈序列? 3.一个有n个1和n个-1组成的字串,且前k个数的和均不小于0,那这种字串的总数为多少?这三个问题具有相同的结构,三个问题是可以互相转化。将姐姐放碗看做入

2017-07-20 08:03:47 387

原创 图书馆里有没有某本书,现有6人排队,有3个人来借此书,3个人来还此书,且若到某人借书时,若无书,则立即离开,多少种排队方法能借到书?

#include<stdio.h>#include<stdlib.h>#define SUM 6int state[SUM];//1代表还书 -1代表借书//void book(int book_lend,int book_return,int num,int count){ //算法结束的条件是:借书的人都借到了,即book_lend==0 if (book_lend

2017-07-19 17:41:27 911

原创 两个栈实现队列的功能。(外部接口是队列)

#include<stdio.h>#include<stdlib.h>//栈typedef struct Stack{ int date; Stack *next;}Stack;//队列typedef struct Queue{ Stack *front; Stack *tail;}Que;//栈的初始化void Init_stack(Stack **

2017-07-19 17:40:26 190

原创 链式队列的基本操作(配图)

一、结构体结构队列中储存的内容,本身是一个链表 队头和队尾只是指向这个链表的两个指针,这样就可以使用两个指针控制访问的事件typedef struct elem{ int date; elem *next;}elem;typedef struct queue{ elem *tail; elem *head;}queue;二、初始化下图是初始化完结构体的样子v

2017-07-18 23:23:41 9696

原创 设一个没有头结点指针的单链表。一个指针指向此单链表中间的一个结点(不是第一个,也不是最后一个结点),将该结点从单链表中删除,要求时间复杂度O(1)。

void delete_two(node *other){ if (other != NULL) { node *q = (node *)malloc(sizeof(node)); q = other->next; other->next = q->next; other->date = q->date;

2017-07-17 22:49:53 608

原创 单链表的简单操作

typedef struct Node{ int date; struct Node *next;}node;//链表的初始化void Init(node **head){ if (*head != NULL) { node * p = (node*)malloc(sizeof(node)); p->next = NULL;

2017-07-17 21:56:06 208

原创 冒泡排序简单改进

int main(void){ int a[] = {0,1,2,3,4,5,6,7,8,9}; bool temp = true; for (int i = 0; i < 9; i++) { temp = false;//首先将其置为false for (int j = 0; j < 9 - i; j++) {

2017-07-17 21:51:51 141

原创 利用链表的头插法,将链表逆序

while(旧链表不为空) { 第一步: 将旧链表从第二个有效数据保存下来到NEXT链表中。 第二步: 将旧链表中的NEXT置为空。 第三步: 将第二步中的链表赋值给新链表的NEXT。 第四步: 将第一步保存的链表赋值给旧链表中,用以循环。 }

2017-07-17 21:28:32 2344

俄罗斯方块C语言版

俄罗斯方块 C语言版 可以成功运行哦!!!

2017-02-22

空空如也

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

TA关注的人

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