怎样学好数据结构
半醒半醉日复日,花落花开年复年
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【数据结构】9. 堆(完整代码实现初始化建堆、插入、删除、获取堆顶元素、判空、获取有效元素的大小、销毁)
目录一级目录前序遍历中序遍历后序遍历 一级目录 堆是一个完全二叉树,分为大根堆和小根堆 大根堆:堆中任意节点的值都大于等于子节点的值 小根堆:堆中任意节点的值都小于等于子节点的值 建堆 方式:对树中节点逐个使用向下调整 直接调整根是不可以的,因为不确定根的左右子树是否是大堆(或小堆),所以必须从最后一个非叶子结点开始调整。 从该节点开始,逐个往前对每个节点使用向下调整,一直到根节点位置 前序遍历 中序遍历 后序遍历 ...原创 2022-02-11 20:49:17 · 1030 阅读 · 0 评论 -
【数据结构】8. 队列(带头节点的单链表实现)(完整代码实现:初始化、入队列、出队列、获取队头元素、获取队尾元素、获取队列中有效元素的个数、判空、销毁)
目录Queue.hQueue.ctest.c Queue.h #pragma once //采用带头节点的单链表实现队列 typedef int DataType; typedef struct QueueNode { struct QueueNode* next; DataType data; }QNode; typedef struct Queue { QNode* front; QNode* back; }Queue; //初始化 void Que原创 2022-02-10 21:29:14 · 941 阅读 · 0 评论 -
【数据结构】7. 栈(顺序栈)(完整代码实现:初始化、入栈、出栈、获取栈顶元素、获取有效元素的个数、判空、销毁)
目录Stack.hStack.ctest.c Stack.h #pragma once typedef int DataType; typedef struct Stack { DataType* array; int capacity; int size; //栈中有多少个元素 -- 也可用来标记栈顶 }Stack; void StackInit(Stack* ps); void StackPush(Stack* ps, DataType data); //入栈 vo原创 2022-02-09 20:49:33 · 1673 阅读 · 0 评论 -
【数据结构】6. 带头节点的双循环链表(完整代码实现初始化尾插、尾删、头插、头删、任意位置的插入、任意位置的删除、获取有效元素的大小、查找、销毁)
目录DCList.hDCList.ctest.c DCList.h #pragma once typedef int DataType; typedef struct DListNode { struct DListNode* next; struct DListNode* prev; DataType data; }Node; void DListInit(Node** head); void DListPushFront(Node* head, DataType da原创 2022-02-07 23:04:28 · 208 阅读 · 0 评论 -
【数据结构】5. 带头节点的双链表(完整代码实现初始化尾插、尾删、头插、头删、任意位置的插入、任意位置的删除、获取有效元素的大小、查找、销毁)
目录DList.hDList.ctest.c DList.h DList.c test.c原创 2022-02-05 15:35:24 · 499 阅读 · 0 评论 -
【数据结构】4. 带头节点的单链表(完整代码实现:初始化、尾插、尾删、头插、头删、任意位置的插入、任意位置的删除、获取有效元素的大小、查找、销毁)
目录SHList.hSHList.ctest.c SHList.h SHList.c test.c原创 2022-02-02 23:20:57 · 770 阅读 · 0 评论 -
【数据结构】3. 不带头节点的单链表(完整代码实现:初始化、尾插、尾删、头插、头删、任意位置的插入、任意位置的删除、获取有效元素的大小、查找、销毁)
目录SList.hSList.ctest.c链表插入和删除的图例 SList.h #pragma once typedef int DataType; //定义节点 typedef struct SListNode { DataType data; struct SListNode* next; //指向下一个节点,类型也是struct SListNode }Node; //初始化 //在函数操作中,如果需要修改head的指向,必须传递二级指针 void SListInit(Node原创 2022-01-31 23:14:10 · 617 阅读 · 0 评论 -
【数据结构】2. 顺序表(完整代码实现:顺序表的初始化、销毁、尾插、尾删、任意位置的插入和删除、判空、查找、扩增)
目录SeqList.hSeqList.ctest.c SeqList.h #pragma once #if 0 //静态顺序表 struct SeqList { int array[MAXSIZE]; int size; // 顺序表中有效元素的个数 }; #endif typedef int DataType; // 动态类型的顺序表 typedef struct SeqList { DataType* array; int capacity; // 表示a原创 2022-01-29 21:44:27 · 1214 阅读 · 0 评论 -
【数据结构】1. 数据结构基本概念(数组、顺序表、链表、栈、队列、二叉树、红黑树、堆、哈希表)
目录1. 数组2. 数组和线性表的区别3. 线性表4. 顺序表5. 链表6. 顺序表与链表的区别 1. 数组 数组:在一段 连续的内存空间 存储多个 类型相同 的数据 2. 数组和线性表的区别 (1)数组静态分配内存,链表动态分配内存 (2)数组在内存中连续,链表不连续 (3)数组元素在栈区,链表元素在堆区 (4)数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n); (5)数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。 3. 线性表 线性表:线性表是n个具有原创 2022-01-16 16:32:48 · 1915 阅读 · 0 评论
分享