
数据结构
Wu~~~~
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
顺序表与链表的区别
顺序表与链表的区别 一、底层实现 顺序表: 连续存储的容器,动态数组,在堆上分配空间; 链表: 动态链表,在堆上分配空间; 二、空间利用率 顺序表: 连续空间,不易造成内存碎片,空间利用率高; 链表: 节点不连续,易造成内存碎片,小元素使节点密度低,空间利用率低; 三、查询元素 顺序表: find O(n); binary_search O(logn); 排序后 链表: find O (n); 四、插入和删除 顺序表: 插入: 在最后插入(空间够): Push_back; O(1); 在最后原创 2021-11-26 20:47:34 · 252 阅读 · 0 评论 -
单链表的插入排序
单链表的插入排序 思路:确定窗体的头和尾,先和头比较,小于头,在头之前插入; 大于尾,在尾后面链,否则在中间插入。 ListNode* InsertSort(LinkList head) { if (head == NULL || head->next == NULL)return head; ListNode* sort_head = head; ListNode* sort_tail = head; ListNode* ip = head->next; ListNode* n原创 2021-11-21 21:32:46 · 1531 阅读 · 0 评论 -
(不带头结点的)单链表逆置
ListNode* NotHeadReverse(LinkList head) { if (head == NULL || head->next == NULL) { return head; } ListNode* pre = NULL, * s = NULL, * p = head; while (p != NULL) { s = p; p = p->next; s->next = pre; pre = s; } return pre; }原创 2021-10-13 14:21:56 · 2208 阅读 · 0 评论 -
单链表的逆置(带头结点)
单链表逆置方法1 使用三个指针 void ReverseList(LinkList head) { assert(head != NULL); if (head->next == NULL || head->next->next == NULL) { return; } ListNode* pre = NULL, *s = NULL; ListNode* p = head->next; while (p != NULL) { s = p; p = p.原创 2021-10-13 11:54:35 · 8336 阅读 · 1 评论 -
顺序表--
#include<stdio.h> #include<iostream> #include<assert.h> #include<vector> #include<map> #include<stack> #include<queue> //C++中本身提供了栈和队列 #include<unordered_map> using namespace std; #define TRUE 1 #defin原创 2021-10-10 18:00:49 · 83 阅读 · 0 评论 -
如何编程?
如何实现代码? 我们要完成的功能就是一个模块,一个模块就是一个函数。 起一个函数名,要见名知意 确定函数的形参,就是调用此函数时传递的资源(实参)。 确定函数的返回值。 在确定函数名称,参数列表,和返回值后开始编写程序。 a.首先检查形参的值是否符合要求。 b.根据功能(逻辑步骤)。定义相应的变量,指针等等,并且初始值,是程序能到达循环的开始。 c.编写循环体。 d.当循环体编写完成。进行善后处理程序的编写。(比如边界条件) e.返回值 ...原创 2021-10-06 20:15:26 · 172 阅读 · 0 评论 -
单链表题目
1.单链表的逆置 方法一:一直头插 void Reverse(PNode plist) { //assert //保证头结点存在 Node *p = plist->next;//让p指向第一个有效节点的地址(但是这个地址有可能为NULL) Node *q = NULL; plist->next = NULL;//或者调用初始化函数让next变成NULL while(p != NULL) { q = p->next; Insert_head(plist, p->原创 2021-09-17 18:24:10 · 133 阅读 · 0 评论 -
数据结构基础
线性表 线性表中的数据元素可以是各种各样的,但同一线性表中元素必定具有相同特性,即属同一数据对象,相邻数据元素之间存在着序偶关系。(唯一的头,唯一的尾,除头之外,其他节点都有唯一的前驱,除尾之外,其他节点都有唯一的后继。) 线性表是一个相当灵活的数据结构,它的长度可根据需要增长或缩短,即对线性表的数据元素不仅可以进行访问,还可以进行插入和删除等。 线性表有两种数据结构表现形式: 顺序表 (逻辑相邻,物理上也相邻) 是一种权限更多的数组 链表 (逻辑相邻,物理上不一定相邻) 时间复杂度:语句与问题规模之原创 2021-09-08 16:22:35 · 547 阅读 · 0 评论 -
数据结构基础
链表 双向链表 为什么要有双向链表? 因为单链表有自身局限性(只能向后跑,不也能向前跑) 双向链表是啥? 和单链表相比,多了一个直接前驱指针 正常来说单链表需要处理2根线 而双向链表需要处理4根线 但是头插函数比较特殊,需要防止出现空链表导致少处理一根线 按位置删除函数也比较特殊,有可能删除的是最后一个节点 ...原创 2021-09-08 22:13:45 · 343 阅读 · 0 评论