草庐IT

【数据结构初阶】单链表(附全部码源)

单链表1,单链表的概念及结构2,单链表的实现2.1初始化内容(所需文件,接口)2.2申请结点2.3打印单链表2.4尾插2.5头插2.6尾删2.7头删2.8查找2.9在pos位置之后插入2.10在pos位置前面插入2.11删除pos之后的值2.12删除pos位置的值2.13销毁链表3.全部码源1,单链表的概念及结构概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。现实中数据结构中2,单链表的实现2.1初始化内容(所需文件,接口)所需文件头文件->SList.h源文件->test.c源文件->SList.c接口(SList.h中)#incl

C++模板初阶

C++模板初阶一.泛型编程二.函数模板1.概念2.实例3.原理4.函数模板的实例化5.模板参数的匹配原则三.类模板1.类模板的引出2.实例3.易错点:类模板的声明跟定义分离大家在做OJ题的时候可能看到过这种使用STL的样子:其实这个就是我们今天要介绍的模板这个语法在STL中的应用一.泛型编程在介绍泛型编程的概念之前,先给大家看一下这个例子比方说:我今天要分别实现int和int类型,double和double类型,char和char类型的Swap函数那么我可能需要利用函数重载写出一下三份代码voidSwap(int&a,int&b){ inttmp=a; a=b; b=tmp;}voidSwap

多线程初阶——线程安全

线程安全文章目录线程安全1.什么是线程安全2.为什么会造成线程不安全2.1线程抢占式的执行2.2多个线程修改同一变量2.3原子性2.4内存可见性2.5指令重排序总结3.如何解决线程安全问题1.什么是线程安全场景:用两个线程同时对一个变量进行5万次自增操作,预期结果是自增10万次。publicclassdemo1{privatestaticintnum=50000;publicstaticvoidmain(String[]args)throwsInterruptedException{Countercounter=newCounter();Threadt1=newThread(()->{for(

【数据结构初阶】链表OJ

链表OJ题目一:移除链表元素题目二:反转链表题目三:链表的中间节点题目四:链表中倒数第k个结点题目五:合并两个有序链表题目六:链表分割题目七:链表的回文结构题目八:相交链表题目九:环形链表题目十:环形链表II题目一:移除链表元素OJ方案一:题目解析:代码演示:structListNode{intval;structListNode*next;};structListNode*removeElements(structListNode*head,intval){structListNode*cur=head,*prev=NULL;while(cur){if(cur->val==val){if(c

C++初阶(十)模板初阶

📘北尘_:个人主页🌎个人专栏:《Linux操作系统》《经典算法试题》《C++》《数据结构与算法》☀️走在路上,不忘来时的初心文章目录一、泛型编程1、如何实现一个通用的交换函数呢?2、引出模板二、函数模板1、函数模板概念2、函数模板格式3、函数模板的原理4、函数模板的实例化1、隐式实例化2、显式实例化5、模板参数的匹配原则三、类模板1、类模板的定义格式2、类模板的实例化一、泛型编程1、如何实现一个通用的交换函数呢?使用函数重载虽然可以实现,但是有一下几个不好的地方:重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数代码的可维护性比较低,一个出错可能所有的

【C语言初阶】操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)

目录C语言中六种位运算符:一、位移运算符1、移位运算符简介2、先要了解一点3、4、>>右移运算符5、警告二、1、&按位与2、|按位或3、^按位异或4、~取反4、例子 C语言中六种位运算符:&按位与|按位或^按位异或~取反>>右移位运算符用来对二进制位进行操作,C语言中提供了如上表所示的位运算符。位运算符中,除~(取反)以外,其余均为双目运算符。位运算符操作数只能为整型和字符型数据。一、位移运算符1、移位运算符简介在C语言中,移位运算符有双目移位运算符:>(右移)。左移运算是将一个二进制位的操作数按指定移动的位数向左移动,移出位被丢弃,右边移出的空位一律补0。右移运算是将一个二进制位的操作数按指

【C语言初阶】之函数

【C语言初阶】之函数1.函数是什么2.C语言中的函数2.1库函数2.2.1利用文档学习库函数2.2自定义函数3.函数参数3.1实际参数(实参)3.2形式参数(形参)4.函数调用4.1传值调用4.2传址调用4.3练习5.函数的嵌套调用和链式访问5.1嵌套调用5.2链式访问6.函数的声明和定义6.1函数的声明6.2函数的定义2.3项目中函数的声明和定义的常见使用方式2.3.1项目中分文件来写的目的7.函数递归7.1递归的定义7.2递归的两个必要条件7.2.1练习17.2.2练习27.3递归与迭代7.3.1练习37.3.2练习47.3.3递归和迭代的区别❤️博客主页:小镇敲码人🍏欢迎关注:👍点赞👂🏽

数据结构初阶表现----动态顺序表

概述:  相信大多数代码小白在学完c语言,进入数据结构的学习后,都会有疑惑,不清楚数据结构究竟是在学什么,学这个到底有什么用。简而言之,数据结构就是对数据的管理,大部分是动态的。其实这个概念还是抽象的,所以今天带大家走进数据结构初级的一个具体表现---->顺序表。1.文件创建:   养成好习惯,创建三个文件Seqlist.h Seqlist.c test.cSeqlist.h: 头文件,放入结构体和函数的声明。Seqlist.c:函数接口文件,用来存放函数的定义。test.c: 测试文件,在写代码过程中用来测试函数的可行性。2.结构体的定义:  不难发现,如果数据的内存空间是静态的,也就是开辟

【C++】模板初阶

目录一,泛型编程二,函数模板1,函数模板概念2,函数模板格式3,函数模板的原理4,函数模板的实例化5,模板参数的匹配原则三,类模板1,类模板的定义格式2,类模板的实例化3,模板【栈】的用法一,泛型编程我们一般如何实现一个通用的交换函数呢?voidSwap(int&left,int&right){ inttemp=left; left=right; right=temp;}voidSwap(double&left,double&right){ doubletemp=left; left=right; right=temp;}voidSwap(char&left,char&right){ char

数据结构初阶---复杂度的OJ例题

复杂度的OJ例题一、消失的数字1.思路一2.思路二3.思路三二、旋转数组1.思路一2.思路二3.思路三一、消失的数字数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(N)时间内完成吗?链接:力扣:消失的数字1.思路一排序+遍历:如果下一个数据不等于上一个数据加1,那么下一个数据就是那个消失的数字。时间复杂度:O(N*LogN)由于这个时间复杂度时间复杂度过高,本思路不再冗余,赘述。2.思路二利用等差数列公式:从0加到n,然后再减去这个数组中的所有数字,那么最终所得的差就是缺失的数字。时间复杂度:O(N)代码如下:#includeintmissing