笔记
一把大锤子
这个作者很懒,什么都没留下…
展开
-
数据结构之不带头结点的单链表
我们都知道不管是单链表、双向链表还是循环链表,都带有头结点,这个头结点相当于一个起始的位置。我们在设计带头结点的单链表的时候,我们会在主函数中设计一个头结点,并把它的指针域置为空,这样我们就可以进行增删查改这些操作了。那我们今天这篇博客就来说一下不带头结点的单链表。一、不带头结点的单链表的定义我们先来回忆一下带头结点的单链表是什么样子。如下图所示:红色的区域就是头结点,它有一个头指针指向它。...原创 2020-04-20 17:20:12 · 15278 阅读 · 0 评论 -
【Linux】MakeFile文件
一、问题的出现我们在Linux上编译一个main.c文件时通常会用到这个命令:gcc -o main main.c假如我们同时写了多个文件,比如有sel.c、select.c、sub.c等等,我们就会这样来编译这些文件gcc -o main main.c sel.c select.c sub.c但如果其中一个文件出现错误,我们修改了之后就会必须将其他文件里的相关内容也进行修改但如...原创 2020-04-18 15:06:03 · 2458 阅读 · 0 评论 -
链式存储结构之双向链表
我们在单链表中,有了next指针这就使得我们查找下一个元素的时间复杂度为O(1),但是如果查找上一个结点的最坏的时间复杂度就得是O(n),因为我们每次都得从头遍历。为了解决这一问题,我们就得了解双向链表的相关特性。本篇博客我们就来说一下双向链表的有关知识,以及双向链表的相关实现。一、双向链表的定义双向链表是在单链表的每个结点中在设置一个指向其前驱结点的指针。所以双向链表中就会有两个指针域,一个...原创 2020-04-17 17:56:08 · 958 阅读 · 0 评论 -
线性表的链式存储结构之单链表
我们上一篇博客说的线性表的顺序存储结构结构它是有缺点的,最大的 缺点就是插入和删除时需要移动大量的元素。所以我们就想到用链式存储结构来解决这个问题,就是让上一个元素存储下一个元素的地址,方便找到。这样所有元素就都可以通过遍历找到。这篇博客就来说一下单链表的简单实现。一、单链表的定义因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息...原创 2020-04-15 12:32:44 · 230 阅读 · 0 评论 -
线性表顺序存储结构的基本实现
在上一篇博客中我们只是简单得了解了线性表的一些基本的概念。那么这一篇博客我们就来说说线性表的两种物理结构中的第一种—顺序存储结构。一、顺序存储定义线性表的顺序存储结构指的是用一段地址连续的存储单元依次线性表的数据元素。顺序存储的示意图如下:二、线性表的地址计算方法由于c语言的数组的下标是从0开始的,所以线性表第i个元素存储在第i-1的位置。如下图所示:由于每个数据元素,不管它是整型还...原创 2020-04-14 17:34:14 · 1734 阅读 · 0 评论 -
数据结构之线性表的定义
一、逻辑结构和物理结构在了解线性表之前我们先来知道一些数据结构里简单的定义:逻辑结构和物理结构1、逻辑结构(1)定义:指数据对象中数据元素的关系。(2)分类:逻辑结构分为集合结构、线性结构、数形结构和图形结构四种。集合结构:数据元素同属一个集合外,它们之间没有任何其他关系。线性结构:数据元素之间是一对一的关系。树形结构:数据元素之间是一对多的关系。图形结构:数据元素之间是多对多的关...原创 2020-04-14 15:47:45 · 1362 阅读 · 0 评论 -
引用和指针的区别
一、二者的定义1、指针:指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的函数的值。指针的使用就是为了避免拷贝构造,拷贝赋值等默认操作这些高代价的操作,而传递大量的数据。2、引用:相当于一个变量的另一个名称。对引用的操作也就是对变量的操作。二、如何正确书写1、指针:int a=2;//第一种int *p;p=...原创 2020-04-10 21:33:49 · 222 阅读 · 0 评论 -
有关静态分配和动态分配
一、静态分配首先静态分配在编译阶段就确定大小的,所在我们常用的堆是不可以进行静态分配的,因为堆是在运行过程中分配的。而且堆是使用malloc()、callou()、realloc()等吧函数动态分配,使用alloca()函数可以动态分配栈的内存空间,释放时由编译器自己释放我们现在定义一个int型数组:int score[100];但是,在使用数组的时候,我们总是不知道数组有多大。在很多的情...原创 2020-04-06 22:36:12 · 2133 阅读 · 0 评论 -
几种查找的时间复杂度
1、顺序查找:(1)最好情况:要查找的第一个就是。时间复杂度为:O(1)(2)最坏情况:最后一个是要查找的元素。时间复杂度未:O(n)(3)平均情况下就是:(n+1)/2。所以总的来说时间复杂度为:O(n)2、二分查找:O(log2n)->log以2为底n的对数解释:2^t = n; t = log(2)n;3、插值查找:O(log(2)(log(2)n))->log以2...原创 2020-04-03 22:32:20 · 27536 阅读 · 0 评论