![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
Wu~~~~
这个作者很懒,什么都没留下…
展开
-
顺序表与链表的区别
顺序表与链表的区别一、底层实现顺序表:连续存储的容器,动态数组,在堆上分配空间;链表:动态链表,在堆上分配空间;二、空间利用率顺序表:连续空间,不易造成内存碎片,空间利用率高;链表:节点不连续,易造成内存碎片,小元素使节点密度低,空间利用率低;三、查询元素顺序表:find O(n);binary_search O(logn); 排序后链表:find O (n);四、插入和删除顺序表:插入:在最后插入(空间够):Push_back; O(1);在最后原创 2021-11-26 20:47:34 · 188 阅读 · 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 · 1420 阅读 · 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 · 2092 阅读 · 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 · 7142 阅读 · 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 · 34 阅读 · 0 评论 -
如何编程?
如何实现代码?我们要完成的功能就是一个模块,一个模块就是一个函数。起一个函数名,要见名知意确定函数的形参,就是调用此函数时传递的资源(实参)。确定函数的返回值。在确定函数名称,参数列表,和返回值后开始编写程序。a.首先检查形参的值是否符合要求。b.根据功能(逻辑步骤)。定义相应的变量,指针等等,并且初始值,是程序能到达循环的开始。c.编写循环体。d.当循环体编写完成。进行善后处理程序的编写。(比如边界条件)e.返回值...原创 2021-10-06 20:15:26 · 118 阅读 · 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 · 79 阅读 · 0 评论 -
数据结构基础
线性表线性表中的数据元素可以是各种各样的,但同一线性表中元素必定具有相同特性,即属同一数据对象,相邻数据元素之间存在着序偶关系。(唯一的头,唯一的尾,除头之外,其他节点都有唯一的前驱,除尾之外,其他节点都有唯一的后继。)线性表是一个相当灵活的数据结构,它的长度可根据需要增长或缩短,即对线性表的数据元素不仅可以进行访问,还可以进行插入和删除等。线性表有两种数据结构表现形式:顺序表 (逻辑相邻,物理上也相邻) 是一种权限更多的数组链表 (逻辑相邻,物理上不一定相邻)时间复杂度:语句与问题规模之原创 2021-09-08 16:22:35 · 433 阅读 · 0 评论 -
数据结构基础
链表双向链表为什么要有双向链表? 因为单链表有自身局限性(只能向后跑,不也能向前跑)双向链表是啥? 和单链表相比,多了一个直接前驱指针正常来说单链表需要处理2根线 而双向链表需要处理4根线但是头插函数比较特殊,需要防止出现空链表导致少处理一根线按位置删除函数也比较特殊,有可能删除的是最后一个节点...原创 2021-09-08 22:13:45 · 273 阅读 · 0 评论