数据结构与算法
数据结构是计算机一门重要的课程,是学习计算机技术的基石
古城客栈
争取早日成为Java技术大佬
展开
-
归并排序
算法设计:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std; void merge(int a[],int l,int r,int mid){ int aux[r-l+1],i,j,k; for(k=l;k<=r;k++) aux[k-l]=a[k];//开辟新的空间 赋值操作原创 2021-03-11 22:45:23 · 46 阅读 · 0 评论 -
leetcode 404. 左叶子之和
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24题解:/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNo...原创 2020-04-18 11:03:15 · 159 阅读 · 0 评论 -
进阶题56 汉诺塔问题的第m步
56 汉诺塔问题的第m步作者: Turbo时间限制: 3S章节: 递归问题描述 :给定三根杆A、B、C和大小不同的几个盘子。这些盘子按尺寸递减顺序套在A杆上,最小的在最上面。现在的任务是把这些盘子从A杆移到C杆且保持原来堆放顺序。在实现任务时,每次只能移动一个盘子,且任何时刻不允许大的盘子放在小的盘子上面,B杆可以作为辅助存放杆。求:总共有n个圆盘时,搬动过程中的第m步是从哪个杆到哪个杆。...原创 2020-05-19 10:35:07 · 480 阅读 · 0 评论 -
树的双亲表示法建树
#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 20typedef char ElemType;//宏定义树结构中数据类型typedef struct //结点结构{ ElemType data; int parent;}PNode;typedef struct //树结构{ PNode ...原创 2020-03-14 15:58:10 · 421 阅读 · 0 评论 -
二叉搜索树专题讲解
二叉搜索树的插入Node *Insert(BTnode root, int X){ if (!root){//节点不存在 root = (BTnode)malloc(sizeof(node)); root->data = X; root->lchild = NULL; root->rchild = NULL; } if (X < root->d...原创 2020-03-13 10:27:54 · 149 阅读 · 0 评论 -
小白都能理解的三种遍历非递归算法C++实现
中序遍历非递归遍历算法遇到一个结点,就把它压栈,并去遍历它的左子树;当左子树遍历结束后,从栈顶弹出这个结点并访问它;然后按其右指针再去中序遍历该结点的右子树。伪码如下:void InOrderTraversal( BinTree BT ){ BinTree T=BT; Stack S = CreatStack( MaxSize ); /*创建并初始化堆栈S*/ while( ...原创 2020-02-19 12:42:59 · 798 阅读 · 0 评论 -
二叉树的建立C&C++版本
废话不多说,直接上代码//C语言编写的代码#include <stdio.h>#include <malloc.h>//节点开辟空间头文件 typedef struct node{ int data; struct node*lchild; struct node*rchild;}Node,*BTnode;Node *createBiTree(){//No...原创 2020-02-17 16:13:06 · 1446 阅读 · 0 评论 -
顺序查找算法与二分查找算法实例
//顺序查找算法#include <stdio.h>int search(int arr[],int key){ int i; for(i=9;i>=0;i--) if(arr[i]==key) return i;}int main(){ int a[10]; int i; for(i=1;i<10;i++) a[i]=i;//1-9设置元素...原创 2020-02-16 23:17:45 · 474 阅读 · 0 评论 -
快速排序
快速排序在区间中随机挑选一个元素作基准,将小于基准的元素放在基准之前,大于基准的元素放在基准之后,再分别对小数区与大数区进行排序。#include <stdio.h>//快速排序void quick_sort(int s[], int l, int r){ if (l < r){//填坑法 int i = l; int j = r; int x = s[i...原创 2020-02-15 20:09:44 · 67 阅读 · 0 评论 -
插入排序
插入排序:它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。代码:#include <stdio.h>void insertion_sort(int arr[],int len){ int i,j; for(i=1;i<len;i++){//总的趟数 int temp=arr[i]; for(j=i;j>0...原创 2020-02-15 17:43:08 · 124 阅读 · 0 评论 -
选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。#include <stdio.h>void selection_sort(int arr[],int len){ int ...原创 2020-02-15 17:00:10 · 81 阅读 · 0 评论 -
冒泡排序
冒泡排序冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。#include <stdio.h>void bubblesort(int arr[],int len){ for(int i=0;i<len;i++){ for(int j=0;j<...原创 2020-02-15 16:32:54 · 96 阅读 · 0 评论