数据结构
Alfred king
这个作者很懒,什么都没留下…
展开
-
数据结构与算法--二叉树的遍历以及实现
二叉树的遍历二叉树的遍历方法有三种:先序遍历,中序遍历和后序遍历先序遍历先序遍历的方法:如果二叉树为空则返回空,否则先访问根结点,然后前序遍历左子树,在先序遍历右子树基本算法:void PreOrderTraverse(BiTree T){ if(T==NULL){ return; } printf("%c",T->data); PostOrderTraverse(T->lchild);//先遍历左子树 PostOrderTrav原创 2020-12-01 12:41:17 · 403 阅读 · 0 评论 -
数据结构的知识点--查找1
什么是查找顺序表查找折半查找查找的定义顺序查找实现的算法二分查找实现的算法顺序表查找折半查找查找的定义查找就说根据给定的某个值,在查找表中确定一个关键字等于给定值的数据元素顺序查找实现的算法int findindex(int *a,int key){ for(int i=0;i<len;i++) if(a[i]==key) return i; return 0; }时间复杂度O(N)二分查找实现的算法int Binary_Search(i原创 2020-11-30 23:49:47 · 114 阅读 · 0 评论 -
数据结构--链式循环队列
题目要求循环链表队列假设以带头点的循环链表表示队列,链表长度为n,设置头指针和尾指针,试编写相应的队列初始化、入队和出队的算法;实现要求:1、输入循环链表长度n;2、入队m个元素;3、打印队列中所有元素;4、出队k个元素;5、打印队列中的元素;6、销毁队列。范例输入:861 2 3 4 5 63输出:1 2 3 4 5 64 5 6知识简介队列的定义:只允许在一段进行插入操作,在另一端进行删除操作特点:先进先出允许插入的一头为队尾(rear),允许进行删除的是队原创 2020-11-30 23:11:53 · 2543 阅读 · 2 评论 -
线性表翻转(栈)
题目要求线性表翻转(栈)输入一个线性表元素序列,按照逆序方式进行输出。实现要求:1)输入线性表元素个数n。2)顺次输入线性表元素。3)利用栈进行存储。4)打印逆序后线性表。递归是实现顺序栈的方式,因此这一题我直接绕过需要结构体的办法,直接用数组递归的方式实现#include "stdio.h"#include "string.h"#include "stdlib.h"void Stack(int nums[],int i){if(i>0){printf("%d ",nums原创 2020-11-30 22:32:03 · 594 阅读 · 0 评论 -
数据结构之--字符串的处理
题目描述1、定义字符串S1和S2。2、输入字符串S1和S2。3、判断S2是否是S1的字串。4、打印S2在S1中的起始位置。5、从S1中删除S2,打印S1。6、用"VER"替换S1(原始输入的S1)中的S2,打印S1。范例Please input S1 = Foshan UniversityPlease input S2 = verS2 is a sub-string of S1!The position is at 10!After delete S2, S1 = Foshan Un原创 2020-11-30 22:26:30 · 585 阅读 · 0 评论 -
给出二叉树的先序遍历和中序遍历,请你输出它的后序遍历
题目描述1、给定一棵二叉树的先序和中序序列,以单个字母表示一个节点,用一个字符串表示的一种序列,构造该二叉树。2、采用后序遍历,输出后序遍历结果。3、输入与输出字符之间没有空格或其它字符。相关数据结构的一些简单算法先序遍历void PreOrderTraverse(BiTree T){ if(T==NULL){ return; } printf("%c",T->data); PostOrderTraverse(T->lchild);//原创 2020-11-30 22:08:13 · 5297 阅读 · 1 评论 -
最大累加数组问题(最大子序和问题)
题目描述给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.[要求]时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)示范[1, -2, 3, 5, -2, 6, -1]123+5+(-2)+6=12思路分析这是一个很有意思的问题,如果我们用暴力法,逐个相加对前一个和进行比较这是一个很繁琐的问题,但是我们可以使用分治法,提高效率,遍历这个数组原创 2020-11-27 20:02:08 · 149 阅读 · 0 评论 -
剑指offer-- 0~n-1中缺失的数字(python实现)
题目描述这是leetcode上的一道算法题目,我今晚作业不太多于是刚好又遇见了这道题目就手动写了一下,接下来我们看一下题目是什么吧一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。范例输入: [0,1,3]输出: 2输入: [0,1,2,3,4,5,6,7,9]输出: 8思路分析:首先这是一个升序数组,但是我们要对题目的情况进行以下的分类,便可以用最简单的办法进行编码。如原创 2020-11-27 19:22:19 · 217 阅读 · 0 评论 -
数据结构--获取二叉树的深度(递归法实现)
题目描述输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。思路分析需要考虑的情况:1、如果是空的二叉树,深度为0;2、只有根节点,深度为1;3、根节点只有左子树,深度为左子树的深度加1;4、根节点只有右子树,深度为右子树的深度加1;5、根节点既有左子树又有右子树,深度为取左右子树深度的最大者再加1。代码实现/** * Definition for a binary tree node. * struct原创 2020-11-25 11:32:41 · 2958 阅读 · 0 评论 -
线性表的相关操作-初始化、增添、删除
线性表的定义线性表是具有相同数据类型的n个元素的有限序列,n是表长(每个元素占的空间是一样的)ai是线性表中的“第i个”元素线性表中的位序(位序从1开始,数组下标从0开始)线性表的初始化和简单遍历#include <stdio.h>#include "stdlib.h"#define maxsize 10typedef struct { int data[maxsize];//用静态的数组存放数据元素 int length;//线性表当前长度}SqList;/原创 2020-09-29 10:14:15 · 528 阅读 · 0 评论 -
偶遇计算机考研408真题--找出数组中未出现的最小整数
题目描述:心得:本人刚升上大二,数据结构才刚开始学,并没有想到啥算法,尽管做过几道类似leetcode或者牛客网的题目,但是一直没想到。当时我一直困在把负数置0,比较前后关系这里,并没有跳出来,想到别的办法。后来看了一下答案,感觉廓然开朗!思路分析:我们可以考虑开一个数组B,用来统计,对于原来数组的为0的,小于0的,或者A[i]大于n的通通忽略,因为最小整数的范围是【1,n+1】,我们只需要将符合的数在B数组钟置于1,即B[a[i]-1]=1,然后对B数组进行遍历,找到第一个为0的元素的下标+1即原创 2020-09-22 20:32:43 · 268 阅读 · 0 评论 -
数据结构--时间复杂度
什么是时间复杂度:有这样的表达式:T(n)=O(F(N)),表示随问题规模n的增大算法执行时间的增长和f(n)的增长率相同,称作算法的时间复杂度快速判断O的方法如果有一个循环,一般O为n,两个循环,为n的平方,如果循环条件下是有类如n=n*3的运算,则为对数阶(关键还是要具体情况具体分析)...原创 2020-09-21 23:26:55 · 224 阅读 · 0 评论 -
数据结构--算法相关知识
什么是算法算法是特定问题求解步骤的描述,在计算机中表现为直领的有限序列,并且每条指令表示一个或多个操作。算法的比较计算1+2+3+…+100的和int i=0,sum=0,n=100;for(i=1;i<-n;i++){sum+=i;}int sum=0,n=100;sum=(1+n)*n/2明显看得出来,方法二的算法明显是优于方法1的,,当处理的数据越来越大时,更加明显的体现出算法的优劣性的重要性算法的特性1、输入输出零个输入或者多个输入2、有穷性在执行有限的步骤原创 2020-09-21 22:40:06 · 131 阅读 · 0 评论 -
数据结构绪论--数据结构相关知识点
数据结构是一门研究非数值计算的程序设计问题的操作对象以及它们之间的关系和操作的学科。程序设计=数据结构+算法什么是数据数据:描述客观事物的**符号**,是计算机可以操作的对象,是能被计算机识别,并输入给计算机处理的符号的集合。什么是数据元素数据元素:是数据的基本单位,在计算机程序通常作为一个整体考虑和处理一个数据元素可以又若干个数据项组成(注意:数据项是数据的不可分割的最小单位)什么是数据对象是性质相同的**数据元素**的集合,是数据的一个子集四类基本结构(1)集合 (2)线原创 2020-09-14 22:44:49 · 501 阅读 · 2 评论