
怎样学好数据结构
半醒半醉日复日,花落花开年复年
这个作者很懒,什么都没留下…
展开
-
【数据结构】9. 堆(完整代码实现初始化建堆、插入、删除、获取堆顶元素、判空、获取有效元素的大小、销毁)
目录一级目录前序遍历中序遍历后序遍历一级目录堆是一个完全二叉树,分为大根堆和小根堆大根堆:堆中任意节点的值都大于等于子节点的值小根堆:堆中任意节点的值都小于等于子节点的值建堆方式:对树中节点逐个使用向下调整直接调整根是不可以的,因为不确定根的左右子树是否是大堆(或小堆),所以必须从最后一个非叶子结点开始调整。从该节点开始,逐个往前对每个节点使用向下调整,一直到根节点位置前序遍历中序遍历后序遍历...原创 2022-02-11 20:49:17 · 881 阅读 · 0 评论 -
【数据结构】8. 队列(带头节点的单链表实现)(完整代码实现:初始化、入队列、出队列、获取队头元素、获取队尾元素、获取队列中有效元素的个数、判空、销毁)
目录Queue.hQueue.ctest.cQueue.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 · 856 阅读 · 0 评论 -
【数据结构】7. 栈(顺序栈)(完整代码实现:初始化、入栈、出栈、获取栈顶元素、获取有效元素的个数、判空、销毁)
目录Stack.hStack.ctest.cStack.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 · 1582 阅读 · 0 评论 -
【数据结构】6. 带头节点的双循环链表(完整代码实现初始化尾插、尾删、头插、头删、任意位置的插入、任意位置的删除、获取有效元素的大小、查找、销毁)
目录DCList.hDCList.ctest.cDCList.h#pragma oncetypedef 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 · 161 阅读 · 0 评论 -
【数据结构】5. 带头节点的双链表(完整代码实现初始化尾插、尾删、头插、头删、任意位置的插入、任意位置的删除、获取有效元素的大小、查找、销毁)
目录DList.hDList.ctest.cDList.hDList.ctest.c原创 2022-02-05 15:35:24 · 428 阅读 · 0 评论 -
【数据结构】4. 带头节点的单链表(完整代码实现:初始化、尾插、尾删、头插、头删、任意位置的插入、任意位置的删除、获取有效元素的大小、查找、销毁)
目录SHList.hSHList.ctest.cSHList.hSHList.ctest.c原创 2022-02-02 23:20:57 · 685 阅读 · 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 · 531 阅读 · 0 评论 -
【数据结构】2. 顺序表(完整代码实现:顺序表的初始化、销毁、尾插、尾删、任意位置的插入和删除、判空、查找、扩增)
目录SeqList.hSeqList.ctest.cSeqList.h#pragma once#if 0//静态顺序表struct SeqList{ int array[MAXSIZE]; int size; // 顺序表中有效元素的个数};#endiftypedef int DataType;// 动态类型的顺序表typedef struct SeqList{ DataType* array; int capacity; // 表示a原创 2022-01-29 21:44:27 · 1121 阅读 · 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 · 1708 阅读 · 0 评论