数据结构
HiSi_
这个作者很懒,什么都没留下…
展开
-
数据结构学习笔记——队列
队列队列的定义队列的顺序存储结构和基本运算的实现类型声明初始化队列销毁队列判断队列是否为空进队列出队列环形队列基本运算初始化销毁判断队列是否为空进队列出队列链栈链栈的基本运算初始化销毁判断是否为空进队列出队列不带头结点只有一个尾节点指针的循环单链表存储队列队列的定义队列的顺序存储结构和基本运算的实现类型声明初始化队列销毁队列判断队列是否为空进队列出队列环形队列基本运算初始化销毁判断队列是否为空进队列出队列链栈链栈的基本运算初始化销毁判断是否为空进队列出队列不带头原创 2020-09-26 17:37:36 · 1684 阅读 · 0 评论 -
数据结构学习笔记——栈的应用
栈的应用简单表达式求值迷宫求解问题简单表达式求值迷宫求解问题简单表达式求值:存储方式:顺序栈。简单表达式:只包含加减乘除括号和数字的表达式。中缀表达式:运算符位于两个操作数之间的表达式。后缀表达式:运算符位于两个操作数之后的表达式。前缀表达式:运算符位于两个操作数前面。用字符数组exp来储存中缀表达式,用postexp字符数组来存储后缀表达式,运算符的临时存储以及优先级的处理通过运算符栈来处理。例如对于中缀表达式“1 + 2+ 3”,扫描exp字符数组,首先把1存入postexp,然后原创 2020-09-26 09:19:24 · 348 阅读 · 0 评论 -
数据结构学习笔记——栈
栈栈栈的顺序存储结构及其基本运算实现顺序栈4要素栈的基本运算栈的链式存储结构及其基本运算实现链栈4要素基本运算栈栈的顺序存储结构及其基本运算实现顺序栈4要素栈的基本运算栈的链式存储结构及其基本运算实现链栈4要素基本运算栈的定义:栈是一种只能在一端进行插入或删除的线性表,表中允许进行插入和删除操作的一端称为栈顶,栈顶的当前位置由一个被称为栈顶指针(实际上是一个数字)的位置指示器来指示,另一端称为栈底。栈中没有元素,这种栈就叫做空栈,栈的插入操作叫做进栈,栈的删除操作叫做出栈或退栈。栈的原创 2020-09-23 01:07:26 · 863 阅读 · 0 评论 -
数据结构学习笔记——线性表的应用,两个表的连接。
问题描述:把两个表按照某个规则连接起来。比如说有两个个表A=[[1 2 3][2 3 3][1 1 1]],B=[[3 5][1 6][3 4]]如果要把第A表每一行中的第三列与B表每一行中的第一列中元素相等的两个列(例如A表的第一行的第三列元素是3,它与B表的每一行中的第一列中的哪些元素相等呢?很显然是第一行的第一列和第三行的第一列)连接起来形成一个新的表,应该如何设计算法?表的存储方法: 单链表。以行为一个数据域,以顺序表+指针域为一个结点。顺序表的长度为两个表的长度之原创 2020-09-20 20:43:12 · 1093 阅读 · 1 评论 -
数据结构学习笔记——2.5有序表
有序表有序表有序表的归并算法顺序表归并单链表归并有序表有序表的归并算法顺序表归并单链表归并有序表:有序表是逻辑上的概念,是指某一种线性表,其元素的排列顺序是按元素大小递增或者是递减排列的。有序表的归并算法:把两个有序表的元素按某个顺序重新排列。顺序表:typedef int Elemtype;typedef struct SqList{ Elemtype data[maxsize]; int length;}SqList;void UnionList(SqList *L1,S原创 2020-09-20 10:27:33 · 321 阅读 · 0 评论 -
数据结构学习笔记——循环链表
原创 2020-09-14 23:00:45 · 104 阅读 · 0 评论 -
数据结构学习笔记——双链表
在双链表中,由于每个结点既包含一个指向后继节点的指针,又包含一个指向前驱节点的指针,所以当访问过一个节点后既可以依次向后访问每一个节点,也可以依次向前访问每一个结点。1.结点类型的声明:typedef struct DNode{ Elemtype data; struct DNode *prior; //指向前驱结点 struct DNode *next; //指向后继结点} DLinkNode;2.建立双链表://头插法void CreateListF(DLinkNode *&原创 2020-09-14 22:55:14 · 302 阅读 · 0 评论 -
数据结构学习笔记——单链表
建立单链表:头插法:每次都是从头结点插入一个元素的方法,所以它是倒序的。typedef struct LNode //创建结点结构体,由数据域和指针域组成{ Elemtype data; struct LNode *next;} LinkNode;void CreateListF (LinkNode &L,Elemtype a[], int n){ LinkNode *s; L = (LinkNode *)malloc(sizeof(LinkNode)); L ->原创 2020-09-12 15:34:10 · 1056 阅读 · 0 评论 -
数据结构学习笔记——链式存储结构
链表:线性表的链式存储结构,链表里面有很多个结点,每个结点由存放数据的数据域和表示数据元素之间的逻辑关系的指针域(C/C++这么用)。单链表:在每个结点中除了包含数据域之外只设置一个指针域,用于指向其后继结点,这样的链表称为线性单向链表,简称单链表。双链表:在每个结点中除了包含数据域之外设置两个指针域,一个用于指向前驱结点,一个用于指向后继结点。注意:若一个结点中的某个指针域不需要指向其他任何结点,则将它的值置为空,用常量NULL表示。在线性表的链式存储中,通常每个链表带有一个头结点,并通过原创 2020-09-12 15:32:31 · 2411 阅读 · 0 评论 -
数据结构学习笔记——顺序表的应用,快排
快排的基本思想就是:把顺序表的第一个数作为基准,用两个变量,一个从头开始,一个从尾开始,从头的那个负责把大于基准的数字放到后面,从尾的那个负责把小于等于基准的数字放到前面,当两个变量相遇时,把基准放到这个位置的方法,这样子就实现了一次快排。...原创 2020-09-09 23:26:16 · 242 阅读 · 0 评论 -
数据结构学习笔记——线性表之顺序表
线性表的定义:具有相同性质元素的一个有限序列。序列中所含元素个数为线性表的长度。线性表中每个元素由逻辑序号唯一确定,逻辑序号是由1开始的,而物理序号(我们说的数组的下标是从0开始的)。序列中的第一元素叫做表头元素,最后一个元素叫做表尾元素。线性表的抽象数据类型描述:ADT List{ 数据对象: D = {ai | 1<=i<=n, ai为ElemType对象} //ElemType是自定义类型的标识符, //在后面的讨论中,ai是结构体类型的。 数据关系: R =原创 2020-09-02 21:15:20 · 1648 阅读 · 0 评论 -
数据结构学习笔记——算法分析
算法分析方法:时间复杂度空间复杂度一个算法是由控制结构(顺序,分支和循环)和原操作构成的。void fun(int a[],int n){ int i; ·······································(1) for (i = 0;i < n; i++)························(2) { a[i] = 2*i;·······························(3) } for (i = 0; i < n原创 2020-08-30 11:25:25 · 324 阅读 · 0 评论 -
数据结构学习笔记——算法及其描述
算法:对特定问题求解步骤的一系列描述,也就是解决问题的步骤。例如,以下是求解两个正整数m和n的最大公约数的算法:(1) r = m mod n;(2) 若r ==0,则输出n,算法结束。(3)若r!==0,令m = n,n = r,转(1)继续。一个算法应具有一下特性:(1)有穷性:能够执行完,不能够是死循环。(2)确定性:输入同一个值,无论在什么时候都是同样的输出。(3)可行性:可运行的,没有语法错误。(4)有输入:有0个或多个输入。(5)有输出:好让程序员知道这个函数干了什么,有没原创 2020-08-30 09:39:05 · 326 阅读 · 0 评论 -
数据结构学习笔记——存储空间的分配
1.静态分配int i[10] = 10;//不接受未被初始化的变量这就是静态分配,一开始就已经分配好了,直到超出其作用范围。2.动态分配用malloc()函数。下面展示malloc()函数的用法char *p;int num,n;n = 2*num;p = (cahr*)malloc(n*sizeof(char));printf("请输入字符个数:");scanf("%d",&num);printf("请输入字符:");scanf("%s",p);printf("原创 2020-08-29 11:35:42 · 1245 阅读 · 0 评论 -
数据结构学习笔记——数据类型和抽象数据类型
1.数据类型数据类型是指:一组性质相同的值和定义在此集合上面的一组操作的总和,是某种程序设计语言中已实现的数据结构。1.自动变量,就是我们C中类似"int c = 4;",c这样得的变量,在超出其作用范围时会自动释放其内存空间。2.指针类型。3.数组类型。4.结构体类型。结构体定义方式struct Teacher{ int no; char name[8]; int age;}结构体赋值方式。在定义结构体,并定义一个结构体变量之后,可以通过”结构体.成员“来赋值。struc原创 2020-08-29 09:28:00 · 1177 阅读 · 1 评论 -
数据结构学习笔记——存储结构和数据运算
1.1.3存储结构数据的逻辑结构的具体实现。顺序存储结构:采用一组连续的存储单元存放所有的数据元素,也就是说,数据元素在存储器中占有一整块存储空间,而且逻辑上相邻的两个数据元素在存储器中的存储位置也相同。具体实现方式可通过定义结构体,把相关的数据项定义为成员,然后定义一个结构体变量,最后进行赋值。链式存储结构:用链表实现数据的逻辑结构。在链式存储结构中,每个逻辑元素用一个内存结点存储,每个节点是单独分配的,所有的节点地址不一定是连续的,多以无需占用一整块存储空间。为了表示元素之间的逻辑关系原创 2020-08-28 18:39:56 · 2974 阅读 · 0 评论 -
数据结构学习笔记——逻辑结构
1.1.2逻辑结构逻辑结构与数据的存储无关,独立于计算机。表示数据间的关系,在数据结构中主要讨论邻接关系和相邻关系。逻辑结构的表示:图表(表格或者是图形)在用图形表示逻辑结构时,图形中的每个结点对应着一个数据元素,两结点之间带箭头的连线表示他们之间的相邻关系。二元组B = (D,R)D = {}R = {}D是数据的集合,R是D上二元关系(两个数学对象的联系)的集合。R中的一个元素是一个序偶<x,y>,x为y的直接前驱元素,y为x的直接后继元素。若某个元素没有前驱元素,那么原创 2020-08-28 17:25:16 · 1405 阅读 · 0 评论 -
数据结构学习笔记——基本概念
1.贯穿始终的核心思想:(1) 数据的逻辑结构是什么?(2) 数据的存储结构是什么?(3) 怎么实现在存储结构上面的计算?2.基本概念:数据:能够用二进制码表示的数和字符的集合。比如智能一班学生数据表。数据元素:数据的基本单位。比如智能一班某个学生的数据表项。数据项:数据元素的基本单位。比如某个学生的姓名,学号等等。数据对象:具有相同性质的数据元素的集合,我们所讨论的数据就是指数据对象。比如学生的姓名和学号构成一个数据元素,那么它和学生的电话号码和家庭住址所构成的数据元素构成一个数据就不是原创 2020-08-28 17:11:32 · 155 阅读 · 0 评论