![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
zha_zha_zha_wa
这个作者很懒,什么都没留下…
展开
-
栈和队列
栈: 是一个后进先出的线性表,他要求只在表尾进行删除和插入操作。栈的要求: 1.元素必须后进先出2.栈的操作只能在线性表的表尾进行3.对于栈来说,表尾成为栈的栈顶,表头成为栈底栈的插入和删除操作1.栈的插入操作叫进栈,压栈,入栈2.栈的删除操作叫做出栈,弹栈。栈也是线性表,所以栈也有两种存储方式:1.栈的顺序存储结构2.栈的链式存储结构//创建一个栈typedef struc...原创 2020-04-16 21:49:51 · 141 阅读 · 0 评论 -
malloc简单解释
*H=(LinkList )malloc(sizeof(Node)); p=(LinkList*)malloc(sizeof(Node));解释这两句代码左右等号中的星号的意思先解释等号右边的星号;等号右边的星号是强制类型转换,(LinkList* )是指向LinkList类型的指针,此时malloc返回的是没有类型的指针,根据等号左边的类型来决定等号右边的类型比如...原创 2020-04-13 21:30:15 · 1874 阅读 · 0 评论 -
约瑟夫环
#include<stdio.h>#include<stdlib.h>typedef struct node{ int data; struct node *next;}node;//建立结构node *create(int n)//定义一个指针型函数,该函数返回值为指针//create函数创建链并返回一号结点的指针;{ node...原创 2020-04-13 19:41:16 · 102 阅读 · 0 评论 -
静态链表
静态链表: 用数组描述的链表。姑且我们命名这个数组为a如图所示,0下标没有数据,因为线性表是从1开始的,所以当我们用数组描述线性表时,第0哥元素为空,即a0为空。1. 最后一个元素的游标的数字为第一个有数据数组的下标(即a999对应的游标是a1的下标),作用相当于头结点。2. 下标为0对应的游标是第一个没有数据的下标(即a0的游标和a5的下标是相等的)。3. 其余的元素的游标都存的是下一...原创 2020-04-03 17:02:28 · 474 阅读 · 0 评论 -
线性表---单链表的基本操作
链式存储概要: 不光要存储数据元素信息,还要存储他后继元素的存储地址(类似指针)。一些定义:数据域:存储数据元素信息的域。指针域:存储直接后继位置的域,指针域中存储的信息称为指针或链。数据域和指针域组成数据元素成为存储映像,也叫结点Node。n个结点链接成一个链表,就是线性表的链式存储结构。此链表中每个结点只包含一个指针域,所以叫做单链表。头指针和头结点的异同头指针:1.头指针是...原创 2020-04-03 15:49:09 · 323 阅读 · 0 评论 -
第一次数据结构笔记(线性表的基本操作)
第一次数据结构笔记(线性表的基本操作)**PS:1.线性表不同于数组,线性表从1开始,而数组从0开始。2.typedef 是自定义一个类,类似于int double 等,只不过是自定义的。 如typedef int Status,在后面的代码中,Status即代表int,int x == Status x; **1. 线性表的顺序存储结构:#define MAXSIZE 20...原创 2020-03-27 20:31:21 · 180 阅读 · 0 评论 -
循环链表(2)
循环链表中,如果我们要找最后一个元素,时间复杂度为o(n),因为我们需要从第一个开始一个接一个的找。那怎样再次简化,将时间复杂度降低呢我们可以设置一个尾指针(作用类似于头指针)指向尾结点,尾结点的指针指向第一个结点,第一个结点的指针指向第二个结点LinkList LinkA_and_B(LinkList A,LinkList B){ A ->next= B->next-&g...原创 2020-04-18 14:26:12 · 324 阅读 · 0 评论 -
栈的链式存储结构
栈的链式存储结构typedef struct StackNode{ ElemType data;//存放栈的数据 struct StackNode *next;}StackNode,*LinkStackPtr;typedef struct LinkStack{ LinkStackPtr top;//top指针 int count;//栈元素计数器} ...原创 2020-04-18 14:46:18 · 107 阅读 · 0 评论 -
逆波兰表达式
逆波兰表达式也叫后缀表达式下式为转换成逆波兰表达式( 1 - 2 )*( 4 + 5 )—> 1 2 - 4 5 + *那么逆波兰表达式对于栈的意义在哪里呢?当然是简化操作步骤,正常来说计算机进行这种带括号的运算需要先算括号里面的,再算括号外面的,而逆波兰表达式则只需要顺序操作即可,不需要反复操作。这就取得了空间与时间的优势。逆波兰表达式的运算过程。即遇到符号则推...原创 2020-04-18 20:03:52 · 156 阅读 · 0 评论 -
中缀表达式转换为后缀表达式
平时我们使用的四则运算就是中缀表达式#include<stdio.h>#include<stdlib.h>typedef int Elemtype;typedef struct{ ElemType *top; ElemType *base; int stackSize;}sqStack;InitStack(sqStack *s){...原创 2020-04-19 15:26:19 · 199 阅读 · 0 评论 -
队列(链式存储,指针)
**定义:**队列(queue)时只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列也是以顺序表或链表为基础。队列既可以用链表也可以用顺序表。我们一般用顺序表实现栈,用链表实现队列如果是队尾进行插入操作,那么就只能在队首进行删除操作,这才是队!typedef struct QNode{ ElemType data; struct QNode *next;}...原创 2020-04-19 17:20:27 · 725 阅读 · 0 评论 -
队列的顺序存储结构(数组)
**假溢出:**数组未满但是越界了。使用顺序结构写队列,可能回出现下标越界得情况,所以我们可以用循环队列//循环队列#define MAXSIZE 100typedef struct{ ElemType *base; int front; int rear;}cycleQueue;//初始化循环队列//1.分配内存。2.首尾指针指向0InitQueu...原创 2020-04-19 17:56:36 · 180 阅读 · 0 评论 -
树的概念
定义: 树是n个结点的有限集,当n = 0时,称为空树。在任意一棵非空树中:——有且仅有一个特定的称为根的结点。——当n>1时,其余结点可分为互不相交的有限集,每个集合都是一棵树,并且称为根的子树。结点拥有的子树称为结点的度。树的度取树内各结点度的最大值。——度为0的结点称为叶结点或终端结点。——度不为0的结点称为分支结点,除根以外,分支结点也叫内部结点。结点的子树的根称为结...原创 2020-04-28 21:13:39 · 166 阅读 · 0 评论 -
BF算法和KMP算法
BF核心思想: S是主串,T是字串。比较连个字符串S和T,先比较S[ 1 ] 和T[ 1 ]进行比较,如果相等则比较S[ 2 ]和T[ 2 ],一直移动到S[ N ]为止,若S[ 1 ]和T[ 1 ]不相等,则S享向右动一个字符,再将S[ 2 ]和T[ 1 ]进行比较。KMP算法:...原创 2020-04-28 21:14:29 · 195 阅读 · 0 评论