
数据结构
文章平均质量分 76
C语言实现数据结构
英雄不问出处~
爱情不敌坚持泪
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
栈和队列(栈的详解)
栈做题关键是找最近的匹配(东西),比如leetcode中括号的匹配,最后祝大家题题AC。原创 2024-05-12 21:38:19 · 734 阅读 · 1 评论 -
数据结构顺序表的初始化,头插,尾插,头删,尾删,指定位置删除,指定位置插入,查找,销毁(详解)
数据结构是什么?数据结构是两个词的集合数据:是一系列的在杂乱无章的数据的集合结构:是有条理,清晰的集合(例如目录)数据结构就是一些有条理数据的集合数据结构是计算机存储和组织数据的方式顺序表是线性表的一种那么顺序表和线性表到底是什么呢?线性表:具有相同特性的数据结构的集合例如:蔬菜:黄瓜,白菜,莲藕相同特性:蔬菜顺序表的底层是数组,但是在数组的基础上有增删查改等方法,就变成了数据结构线性表有物理结构和逻辑结构线性表:物理结构:不一定是连续的逻辑结构:一定是连续的。原创 2024-04-06 20:48:13 · 787 阅读 · 0 评论 -
动态顺序表实现通讯录代码(详解)
基于动态顺序表实现通讯录项目顺序表的每个数据都是一个结构体也就是每个联系人信息。原创 2024-04-07 20:23:10 · 849 阅读 · 2 评论 -
时间复杂度与空间复杂度(上篇)
算法在运行的过程中要消耗时间资源和空间资源所以衡量一个算法的好坏要看空间复杂度和时间复杂度时间复杂度衡量一个算法的运行快慢空间复杂度是一个算法运行所需要的额外的空间一个算法中我们更关心的是时间复杂度。原创 2024-05-07 23:33:12 · 1195 阅读 · 1 评论 -
二叉树(概念详解)
1.到h-1层都是满节点的,最后1层是不满的,但是从左到右必须是连续的。:一个节点含有的子树的根节点,父亲节点的下一个节点是孩子节点。答案不是的,C语言中的栈和堆是操作系统中的可以存储数据的空间。:若一个节点含有子节点,则称这个节点是它子节点的父节点。1.父亲节点大于任何一个它的孩子节点(根是最大的)1.父亲节点小于任何一个它的孩子节点(根是最小的)树的子树之间是独立的,所以子树之间是不相交的。1.从上到下都是满的,从左到右节点都是连续的。:叶节点是没有子树的节点,也是度为0的节点。原创 2024-05-28 13:37:53 · 1047 阅读 · 2 评论 -
数据结构栈和队列(队列的详解)
假设开始队列为空,phead和ptail都指向NULL要改变一级指针的指向(值)要使用二级指针,解引用改变一级指针。原创 2024-05-17 09:10:02 · 1032 阅读 · 1 评论 -
二叉树的链式访问 与 二叉树专题
1.前序遍历:先访问根节点,再访问左子树,最后访问右子树根 左 右2.中序遍历:先访问左子树,再访问根,最后访问右子树左 根 右3.后序遍历:先访问左子树,再访问右子树,最后访问根左 右 根N 表示 NULL前序访问顺序:1 2 3 N N N 4 5 N N 6 N N中序访问顺序:N 3 N 2 N 1 N 5 N 4 N 6 N后序访问顺序:N N 3 N 2 N N 5 N N 6 4 1子问题是:root不为空,k不等于1转化为求左子树加右子树第三层的节点个数每层k都减1,如原创 2024-07-04 19:23:36 · 926 阅读 · 0 评论 -
栈和队列专题(LeetCode)
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。1.后取地址,相当于开了一个新的队列,在新的队列中许多值是未定义的,相当于随机值,所以不能后取地址。比如tail = 0,k = 4 时,-1+5 = 4 % k+1 = 4,就取到队尾的下标了。,比如非空队列 1 2 3 4,1 2 3导到空的队列中,4直接pop,对应栈顶的删除。将pushlist中的数据导入poplist中,先进的数据就达到先出的效果了。// 返回 False。原创 2024-05-28 10:34:45 · 2137 阅读 · 1 评论 -
七大排序-冒泡排序,插入排序,希尔排序(一)
1.先说冒泡排序,冒泡最好是直接有序,但是基本上不可能,如果数字是随机数的话,冒泡基本上都是最坏的情况,冒一趟,其中一个大的数冒到后面了,但是中间可能还有其他大的数,那么基本上就是O(N^2)了。,有n个数,将第n-1下标的数,插入到区间[0,n-2]中,这样会比较n-1次,假设每次都比较最后一次的情况是n-1次,最外层的趟数是n-1,那么时间复杂度是O(N*N):外层循环是比较的趟数N-1次,假设j 一直等于0,内层循环就每次走N次,那么时间复杂度是O(N*N)第二次排序的消耗 (1+2+…原创 2024-07-06 17:10:57 · 1459 阅读 · 2 评论 -
双向链表的实现(详解)
链表的分类: 带头 不带头 单向 双向 循环 不循环一共有 (2 * 2 * 2) 种链表带头指的是:带有哨兵位节点哨兵位(头结点):可以放随机数据,哨兵位指向的下一个节点就是我们的第一个有效节点,我们指的头节点是哨兵位单向:指针只能从前向后遍历双向:指针既可以从前向后遍历又可以从后向前遍历循环:可以通过尾节点找到头节点,从而达到循环主要使用的链表是单链表和双向链表单链表:不带头单向不循环双向链表:带头双向循环。原创 2024-04-14 23:29:03 · 643 阅读 · 1 评论 -
单链表(详解)
链表在物理结构上不一定是连续的在逻辑结构上一定是连续的(可以通过前一个节点的指针找到下一个节点)链表是由一个一个的节点组成的,一个节点存储:指向下一个节点的指针和一个任意类型的数据由此可以知道链表可以通过前一个节点的指针找到下一个节点,各个节点就串联起来了也可以把链表类比成一列火车,火车(链表)有一列列车厢(节点)组成。原创 2024-04-19 17:19:21 · 979 阅读 · 1 评论 -
二分查找的四种情况
二分查找不断折半,直到找到目标数据,如果找到最后一个数据还没找到,那么就找不到了二分查找又称为区间查找,分为四种情况[ ]左闭右闭,( ]左开右闭,[ )左闭右开,()左开又开( ),[ ) ,[ ] 这三种比较相似,( ]这个画图也可以轻松解决最后在这里祝大家题题AC,好运连连。原创 2024-05-10 09:30:07 · 272 阅读 · 0 评论 -
单链表实现通讯录
Contact.h 声明通讯录函数,定义结构体。test.c 测试通讯录函数。Contact.c 实现通讯录函数。为了方便,就调用单链表的部分函数来实现通讯录。用单链表实现通讯录需要五个文件。姓名,性别,年龄,电话,地址。但其实三个文件也可以实现。原创 2024-04-19 20:15:38 · 410 阅读 · 0 评论 -
二叉树专题
层序遍历用到了队列,root非空,进队列,根的节点出队列把它的孩子带入队列中,以此类推,就把所有节点带入队列中,把节点层序打印出来了。root->left == NULL&&root->right == NULL,左为空,右为空就是叶子节点。出节点出到第一个空节点,如果此节点后面还有节点就不是完全二叉树,相反就是完全二叉树。返回条件:root == NULL,root是空树节点个数为0。返回条件:root == NULL,根为空树,没有叶子节点,返回条件:root == NULL, 空树返回高度是0。原创 2024-12-01 18:21:53 · 386 阅读 · 12 评论