概念栈栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈栈的删除操作叫做出栈。出数据也在栈顶。总结起来,即栈是一种特殊的线性表,数据的插入以及删除操作都在栈顶,遵循后进先出的原则,即后进来的元素在
前言链表结构一共有八种形式,在前面的文章里已经讲完了不带头单向非循环链表的实现,但是我们发现该链表实现尾插与尾删时比较麻烦,要先从头节点进行遍历,找到尾节点,时间复杂度为O(N),而本次所讲的带头双向循环单链表,则可以直接找到尾节点。虽然该链表看起来特别复杂,但实际上真正实现起来很简单,并且用起来真的超爽,还能拿来吹吹牛皮。唬一唬一知半解的外行人。链表的实现typedef int LTDataTy
前言我们之前学过了无头单向非循环链表的实现,但是我们发现,该链表在尾插的时候有一点不好,就是第一次尾插时,会改变头节点,所以我们在上篇文章实现时传的是二级指针。而本次所讲哨兵卫单链表在尾插时则不用改变头节点。所谓哨兵卫,其实就是带了一个头节点,该节点不作为用来存储数据。如下:接下来我们通过具体题目来感受该结构带来的好处。实战练习链表分割现有一链表的头指针 ListNode* pHead,给一定值x
@TOC前言回顾之前的顺序表,我们发现就算是动态扩容,我们也都是成倍的括,也可能存在空间浪费,并且顺序表的头插头删还十分麻烦,需要挪动数据。而链表的存在就解决了头插头删以及空间浪费这一问题,提到链表,我们脑海中就会浮现出一个链条把东西都链接起来。链表链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。这里所谓的逻辑结构,其实就是为了方便理解
前言顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。即在数组上完成数据的增删查改。采用数组存储的原因是,数组的地址也是连续的,随着下标的增长而增长。其实在我们之前写的通讯录,本质其实就是一个顺序表。顺序表又分为静态与动态顺序表,所谓静态顺序表,就是提前开好固定大小的数组空间,而动态顺序表与之相比则更加灵活多变,因此,我们大多使用的都是动态顺序表。最后,
@TOC前言我相信大家在写代码,或者刷题时,不可能每一次都是一次就能写出完美的不出错误的代码,如果真实这样的话,恭喜你,你是一个天才,并不需要进行本篇文章的学习,此文章是我整理的本人作为小白时期遇到的一些BUG,以及遇到这些BUG应如何去解决它,文章适用于新入门的小白,对于CV老司机就不适用啦。(?鸡哥护体) 通过本章的学习,将会帮助小白能自己调试,并解决一些简单问题!BUG的前世今生首先要
@TOC前言1. 什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 我们在前面写的通讯录,其实就是一个数据结构 2.什么是算法? 算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
@TOC前言在前面的文章中写了静态与动态版本的通讯录,动态版本通讯录与静态版本相比,有着更大的优势,因为可以实现按需开辟空间,但是也存在一个致命缺陷,就是我们发现,不管是动态还是静态版本的通讯录,他们都是“一次性”的,也就是说,当我们下次再打开通讯录时,以前写过的信息数据都不在了。 那么有什么方法可以把我们写过的数据记录下来以便下一次可以直接使用呢? 举个例子来说,我们大学生都在电脑上写过一
@TOC静态版本通讯录前期思路与之前的扫雷以及三子棋的实现方式是一样的,创建两个源文件,一个用来测试,一个用来存放函数定义,再创建一个头文件,用来存放函数声明。接下来是着手实现通讯录。 首先要有一个大概的框架,并且要明确即将实现的通讯录的功能,最基本的即增删查改,然后对这些功能进行进一步的细化实现,并且我们知道,人的信息是一个比较复杂的对象,不可能用一句话就概括,所以就用到了之前学过的结构体
前言(栈区、堆区、静态区)请耐心看完,看完后就会对内存中的空间划分有了更深刻的认识!我们知道,任何一个变量的创建都会向内存申请空间用来存放,而在内存中的空间又划分为几个区域、最主要划分为:栈区、堆区、静态区而我们平常创建变量或者数组,如下:int a=0;int arr[1000];这里的a与arr都是在栈区开辟空间的,而栈区的特点之一就是出了作用域就会自动销毁,所以它们的生命周期只要出
字符串函数前言我们已经了解了C语言中很多数据类型,比如int(整数类型)、char(字符类型)、以及浮点型的double(双精度)、float(单精度),但是有一点就是我们发现这里并没有提到我们常见的有关字符串的类型。其实在C语言中,字符串通常是放在 常量字符串 中或者 字符数组 中的。(常量字符串是不可被修改的)1.0 strlen的实现及模拟(求字符串长度)字符串是双引号" "引起来的,以 '
关于C语言的知识放在专栏:C 小菜坤日常上传gitee代码:https://gitee.com/qi-dunyan ❤❤❤ 个人简介:双一流非科班的一名小白,期待与各位大佬一起努力!@TOC1、结构体(struct)1.0 结构体类型的声明我们通常会用一个变量来定义一个事物,就比如我们要进行求和,我们通常会创建一个sum的变量来存放求和的结果,最终再打印sum,此时的sum
@TOC前言我们都知道,指针是C语言中必不可少的一部分,是C语言的精髓所在,一个学习C语言的人如果不对指针有着深刻的理解,那还不算得上是真正入门,本篇文章整理了对于指针更深一步的了解所学到的知识,以及一些个人的见解,期待能帮到您对此有更深刻的认识。话不多说,直接开搞!1、初阶指针大致回顾在之前的指针初阶文章里,主要讲了以下内容:指针就是个变量,用来存放地址,地址唯一标识一块内存空间。不管是
@TOC1. 数据类型详细介绍到目前为止,我们已经掌握了C语言的基本内置类型,如下:char //字符数据类型 (1 byte)short //短整型 (2 byte)int //整形 (4 byte)long //长整型 (4/8 byte)long long //更长的整形 (8 byte)float //单精度浮
小菜菜的gitee网址:https://gitee.com/dashboard,记录了菜鸟的学习过程,希望一起加油!!!❤❤❤@TOC指针是什么要了解指针的含义,首先我们必须要先了解内存,内存是电脑上的存储器,是用来存储程序和数据的,程序的运行都在内存,而内存又被划分为很多个内存单元,每个内存单元大小为一个字节,并且每一个内存单元都有自己的编号,这个编号就是地址,指针就是内
在前面的文章里,已经对基本上大概所有的操作符都进行了讲解,本章主要针对之前未曾讲解过的,以及一些博主认为很重要的进行讲解。移位操作符移位操作符一共有两个,一个是左移操作符:<<,一个是右移操作符:>> 他们两个很好区分,看箭头指向的方向,指向左就是左移操作符,指向右,就是右移操作符。我们还要知道,移位移动的是什么,其实移动的就是一个整数的二进制位首先我们要知道一个整数的二进
一维数组一维数组的创建及初始化所谓数组,就是同一种元素的集合。一维数组的表达式为:数组元素类型 +数组名+ [ 常量表达式];#include<stdio.h>int main(){ //元素类型为 int ,名为arr的共10个元素的数组 int arr[10]; //元素类型为 double ,名为arr1的共10个元素的数组 double arr1[10]; //元素类
函数是什么在数学里,我们经常接触并且为之头疼的就是函数,但是越头疼,反而用到的越多,数学中不开函数。同样在C语言里,也存在着函数。 在C语言里,函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种。库函数与自定义函数所谓库函数,就是存放在C语言函数库中供人使用的函数,使用库函数,必须要包含相对应的头文件,像我们早期遇到的printf()、scanf()输出输入,都是库函数,在使
分支语句所谓分支语句,在我看来其实就是选择语句,先做判断,在做选择,就跟我们在生活中一样,面临着各种选择,而不同的选择,则对应着不同的结果,在C语言里也是如此。下面介绍C语言里常用到的if以及switch语句的具体使用以及注意事项。if 语句了解if语句的使用,首先,我们必须知道它的语法结构。if(表达式)语句;//if(表达式1)语句1;else语句2;//多分支if(表达式1)语句1;e
10、操作符指令系统的每一条指令都有一个操作符,它表示该指令应进行什么性质的操作。不同的指令用操作符这个字段的不同编码来表示,每一种编码代表一种指令①算数操作符附带练习题(先看完算数操作符----仅提供小白练习)有兴趣的可以把答案发在评论区+ - * / %加减乘除就不用多说了,下面讲一下%的用法,%就是用来取余用的,就比如说:5/2,在数学里我们通常把得到的结果写成2.5
1、什么是c语言C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 简单来说,C语言就是实现人与计算机进行交流的语言,我们可以用C语言来写出一些代码,来告诉计算机,让它帮我们做一些想做的事情。就比如:让它来帮我们做一个简单的加减乘除等…在目前
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号