
数据结构
数据结构
18岁boy想当攻城狮
这个作者很懒,什么都没留下…
展开
-
栈的应用(实现运算)
尝试做以下习题://表达式char a[] = "3+5*2-1+8/2"5 * 2 == 103 + 10 == 1313 - 1 == 128 / 2 = 412 + 4 = 16上面的表达式可以用栈来实现创建2个栈 1 操作数栈(3, 5, 2, 1, 8, 2)2 运算符栈('+' '*' '-' '+' '*') linkstack.c#include <stdio.h>#include <stdlib.h>#include "links原创 2022-05-04 16:30:23 · 487 阅读 · 0 评论 -
双向循环链表解决约瑟夫问题
双向循环链表解决约瑟夫问题#include <stdio.h>#include <stdlib.h>typedef int datatype;typedef struct node_t{ datatype data; struct node_t * prior; struct node_t * next;}link_node_t,*link_list_t;typedef struct doublelinklist{ link_list_t head; l原创 2022-05-04 16:29:52 · 1233 阅读 · 0 评论 -
霍夫曼树(最优二叉树)
霍夫曼树(最优二叉树)所有带权值的节点都是叶节点(1)将每一个带权值的节点看做一颗树的根,将其放入到链表中(放入的过程,将带权权值的节点按照 权值的大小顺序插入链表)(2)重复 从链表中取出前两节点(前两个节点也就是权值相对最小的两个节点),作为叶子节点,再创建一个新的树根节点,作为这两个叶子的父节点,父节点的权值 = 左子权值 + 右子权值,再将刚才形成的新树,插入到链表,最终循环结束时,链表中只有一个节点,也就是霍夫曼树的根节点(3)打印霍夫曼树 (层次遍历)(4)霍夫编码:子节点先将原创 2022-05-04 16:29:20 · 727 阅读 · 0 评论 -
【12】图
图1.1 图的概念图(Graph)是一种非线性数据结构1.2 图的基本术语(1)有向图和无向图(2)网: 弧边上有权值,带权值得图成为网(3)顶点的度(4)路径:路径上边的条数定义为该路径的长度1.3 图的特征任意的两个元素都可能相关,即图中任一元素可以有若干个直接前驱和直接后继属于网状结构类型。 1.4 图的存储结构(1)邻接矩阵(数组)//////////////////有向图和无向图////////////////////#include <s原创 2022-05-04 16:28:43 · 443 阅读 · 0 评论 -
【11】排序
排序方法1.影响排序的效率有哪些(1)交换次数(2)移动次数2.稳定排序和非稳定排序设文件f=(R1……Ri……Rj……Rn)中记录Ri、Rj(i≠j,i、j=1……n)的key相等,即Ki=Kj。若在排序前Ri领先于Rj,排序后Ri仍领先于Rj,则称这种排序是稳定的,其含义是它没有破坏原本已有序的次序。反之,若排序后Ri与Rj的次序有可能颠倒,则这种排序是非稳定的,即它有可能破坏了原本已有序记录的次序。12 3 34a 1 423 34b//不稳定排序如果你排序结束后 34b 在原创 2022-05-04 16:28:14 · 747 阅读 · 0 评论 -
【10】查找
查找方法1.顺序查找####练习####(1)main函数中定义一个数组int a[10] = {12,34,45,23,54,2,4,65,23}(2)定义一个函数,查找指定数据(3)如果找到了,返回它的位置,数组下标即可,未找到返回-1(4)main函数中测试//p 保存数组首地址,n元素个数,value 要查找的值 findByOrder(int *p, int n,int value)#include <stdio.h>int findByOrder(int *p,原创 2022-05-03 21:31:52 · 270 阅读 · 0 评论 -
【9】树的基本操作
树概念:树(Tree)是(n>=0)个节点的有限集合T,它满足两个条件 :有且仅有一个特定的称为根(Root)的节点;其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树(Subtree)。 特征: 一对多,每个节点最多有一个前驱,但可以有多个后继(根节点无前驱,叶节点无后继)1.1 关于树的一些基本念(1)度数:一个节点的子树的个数 (2)树度数:树中节点的最大度数(3)叶节点或终端节点: 度数为零的节点原创 2022-05-03 21:30:45 · 430 阅读 · 0 评论 -
【8】链式队列
链式队列:逻辑结构: 线性结构 存储结构:链式存储结构 队头 队尾--》创建一个链式队列,需要拿到头节点(队头)的地址 尾节点(队尾)节点的地址。QueueLink.c/**** Created by 24122 on 2022/4/25.**/#include <stdio.h>#include <stdlib.h>#include "QueueLink.h"/*** 1.创建一根空的链式队列*/queue_t原创 2022-05-03 21:30:03 · 134 阅读 · 0 评论 -
【7】顺序队列
什么是队列?只允许在两端进行插入和删除操作的线性表,在队尾插入,在队头删除插入的一端,被称为"队尾",删除的一端被称为"队头",在队列操作过程中,为了提高效率,以调整指针代替队列元素的移动,并将数组作为循环队列的操作空间。特点:先进先出 FIFO后进后出 LILO顺序队列(又称循环队列)逻辑结构: 线性结构 存储结构:顺序存储结构SeQueue.c/**** Created by 24122 on 2022/4/24.**/#include <stdio.h>原创 2022-05-03 21:29:38 · 112 阅读 · 0 评论 -
【6】链式栈
链式栈(1)逻辑结构: 线性结构(2)存储结构: 链式存储 (3)顺序栈和链式栈的区别是 实现的方式不同,链栈用链表不限定长度,随用随开节点空间。LinkStack.c/**** Created by 24122 on 2022/4/24.**/#include <stdio.h>#include <stdlib.h>#include "LinkStack.h"void CreateLinkStack(stack_t **ptop){ *ptop原创 2022-05-03 21:28:44 · 292 阅读 · 0 评论 -
【5】顺序栈
栈1.什么是栈?只能在一端进行插入和删除操作的线性表(又称为堆栈),进行插入和删除操作的一端称为栈顶,另一端称为栈底栈特点:先进后出 FILO first last in out 后进先出 LIFO顺序栈 :sequeue 顺序 stack 栈逻辑结构:线性结构存储结构:顺序存储(数组)SeqStack.h/**** Created by 24122 on 2022/4/23.**/#ifndef DATASTRUCTURE_SEQSTACK_H#define D原创 2022-05-03 21:28:13 · 124 阅读 · 0 评论 -
【4】单向循环链表
单向循环链表:所有指针域和数据域都是有效的。 无头单向链表尾节点的指针域保存头节点的地址,就可以形成单向循环链表。用单向循环链表解决约瑟夫问题: 通过一定的规律找出一个最终的值。总结:面试题顺序表和单向链表比较(1)顺序表在内存当中连续存储的(数组),但是链表在内存当中是不连续存储的,通过指针将数据链接在一起(2)顺序表的长度是固定的,但是链表长度不固定(2)顺序表查找方便,但是插入和删除麻烦,链表,插入和删除方便,查找麻烦#include <stdio.h>#原创 2022-05-03 21:27:22 · 375 阅读 · 0 评论 -
【3】链表 (单向)
链表 (单向)单向链表、单向循环链表、双向链表、双向循环链表开辟的是单个的存储空间,通过地址将他们联系在一起。 逻辑结构:线性结构 存储结构:链式存储单向:1.有头单向链表链表中的头节点数据域无效,指针域有效。2.无头单向链表 所有节点的数据域和指针域都是有效的。Link List.c/**** Created by 24122 on 2022/4/23.**/#include <stdio.h>#include <stdlib.h>#inclu原创 2022-05-03 21:26:54 · 144 阅读 · 0 评论 -
【2】顺序表
顺序表特点:内存空间是连续开辟。(数组) 逻辑结构:线性结构 存储结构:顺序存储结构SeqList.c/**** Created by 扫地僧头发多 on 2022/4/22. * 顺序表的基本操作**/#include <stdio.h>#include "SeqList.h"#include <stdlib.h>/*** 1.创建一个空的顺序表*/seqlist_t *CreateSeqList(void){ //1.申请开辟空间原创 2022-05-03 21:26:17 · 99 阅读 · 0 评论 -
【1】绪论
【1】数据结构 概念:数据的逻辑结构存储结构及操作1.数据 数据:不只是一个单独的数值,是一个集合的概念 数据元素:数据的基本单位,由基本的数据项构成。 (如:整个图书馆就是一个数据,一本书就是一个数据元素。 描述这本数据的每个信息就是数据项。) 数据项:是数据元素的基本单位,描述数据元素拥有的信息 节点:就是数据元素2.逻辑结构 概念:描述数据之间的逻辑规律和数据之间的联系 (元素与元素之间的关系)逻辑结构的分类:原创 2022-05-03 21:25:46 · 364 阅读 · 0 评论