- 博客(11)
- 收藏
- 关注
原创 浅谈栈与队列(C语言)
文章目录栈的定义栈的实现前置初始化栈栈的销毁栈的插入出栈的操作取栈顶元素栈的大小队列的定义队列的基本操作队列的初始化队列的销毁队列的插入队列的删除队列的判空取出队头元素取出队尾元素队列的大小点个赞把栈的定义栈同样是一种线性表,它的特性是插入元素必须从后面插入,删除元素也是从后面删除,进行数据删除和插入的一端称为栈顶,另一端是栈底。压栈—就是插入元素出栈—就是删除元素它可以用数组实现也可以用链表实现但是用数组实现更好,因为链表的插入和删除要进行遍历,而数组可以进行随机访问,从而时间复杂度更低。
2021-11-02 15:31:12 303
原创 单链表的基本操作
文章目录单链表的基本介绍链表与数组的区别链表的基本操作单链表的基本介绍单链表是顺序表的一种,顺序表指的是可以线性排列,具有同种元素的有限序列。比如数组是顺序表的一种,它的空间上是连续的,逻辑上也是连续的。而链表是由指针进行连接的,空间上是不连续的,逻辑上是连续的。链表与数组的区别对于链表它是不支持随机访问的,因为它必须知道它的地址,要寻找上一个节点,而数组可以随机访问在插入元素上,数组上可能要搬运元素,但是链表却可以任意插入,时间复杂度较高。如果插入了许多元素,链表不需要扩容,而数组需要对于
2021-11-02 14:46:22 199
原创 环形链表Ⅰ&&Ⅱ
环形链表Ⅰ对于此题,我们设置两个指针,快指针,和慢指针,它们初始的时候都指向头部,快指针每次走两步,慢指针每次走一步,当慢指针进入到环的开始的时候,就进行到快指针追逐慢指针的过程,由于快指针快了一步,所以只要存在环那么一定追上。环形链表Ⅱ我们想返回链表开始入环的第一个节点,在追击问题中,我们存在一个二级结论,我们利用这个结论就可以接触这个题目结论以及结论的证明结论:一个指针从相遇点开始,一个指针从链表头开始走,他们相遇的位置一定是开始入环的第一个节点证明如下由此我们写出代码先找
2021-10-28 12:10:16 106
原创 写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换
这里实现了交换一个数字的奇数位与偶数位,其交换规律是二进制序列中的第0位与第1位交换,第2位与第3位交换,第4位与第5位交换,……1.先找到奇数位2.找到偶数位3.奇数位右移一位并保存4.偶数位左移一位并保存5.进行异或操作define SWAP_ODD_EVEN(NUM) ((((NUM) & (0X55555555)) << 1) | (((NUM) & (0XAAAAAAAA)) >> 1))**如何得到奇数位**int num = 7; /
2021-10-09 21:07:28 423
原创 详解文件操作
什么是文件程序文件源程序文件.c 目标文件.obj 可执行文件.exe数据文件就是指程序运行时要读取或者输出数据的文件我们经常会把信息放在磁盘上,当需要的时候就把磁盘的数据读到内存中再使用,或者把信息输入到磁盘里边。这就是文件的操作。文件类型文本文件—例如整数10000,(一个字符占一个字节)它是以ACLL形式进行存储,内存中占有5个字节二进制文件—还是10000,内存中以二进制存储 10 27 00 00,一个整数,占四个字节文件指针每一个被使用的文件都在内存中开辟了一个
2021-09-28 19:45:15 174
原创 一篇文章弄懂动态内存管理
**为什么要存在内存管理?**我们通常使用,局部变量数组来开辟内存如int val=20;int arr[10]={0};但是上面内存开辟空间存在两个特点内存的空间开辟是固定的数组在申明时,必须要指定数组的长度,程序在编译是分配内存但是对于空间的需求并不是固定的,有时候我们在程序运行时才能知道需要多少内存,这时候我们就需要动态管理内存了动态函数的介绍C语言有这样一个函数void *malloc(size_t size);函数向内存申请一块连续的空间,并返回指向这块空间的指针
2021-09-25 16:39:29 97 1
原创 浅谈结构体,结构体内存对齐
@TOC结构体及结构体的内存对齐结构体的定义结构体的基本知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构体的定义例如描述一个学生struct Stu{char name[20];int age;char id[20];};在声明结构的时候可以不完全声明比如//匿名结构体类型struct{ int a; char b; float c; }x;struct{ int a; char b; float c; }a[20],
2021-09-21 11:16:29 109
原创 可能是csdn上最好的字符串函数介绍
看之前可以赞一下吗???字符串函数的介绍在 C 语言中,字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。下面的声明和初始化创建了一个 RUNOOB 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 RUNOOB 的字符数多一个。例如你可以char [str]="string";在字符串的结束系统会自动加上\0这里有许多C语言中常用的字符串函数,下面我们给予简单介绍strlen1.strlen的介绍
2021-09-15 18:17:01 166 2
原创 用冒泡排序来模拟实现qsort函数
用冒泡排序来模拟实现qsort函数## 标题问题的开始我们先看一下qsort函数compar是一个用于比较两个元素的函数,即回调函数void BubbleSort(void* base, size_t num, size_t width, int (*cmp)(const void* e1, const void* e2)){ //首先看趟数 int i = 0; for (i = 0; i < num - 1; i++) { int j = 0; for (j = 0;
2021-09-02 11:54:59 116
原创 浅谈常见排序
排序的简单分类排序的分类:排序分为插入排序、选择排序、交换排序、归并排序四大类;我们将待排序的数组设为a【】,元素个数位n插入排序1.直接插入直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的记录增加1的有序表。2.希尔插入排序按一定跨度d两两进行比对并按序交换位置,进行完一轮比对后跨度缩小再进行下一轮,经过几轮后先将整个序列变成部分有序,然后再进行直接插入排序,减少直接插入排序的开销选择排序1.简单选择排序简单选择排序是取出一个元素
2021-06-09 11:11:09 347 8
原创 处女作-----开始自己的技术分享之路
处女作-----开始自己的技术分享之路自我介绍我的目标我如何学习程序设计我的学习时间我的就职目标我是一名土木工程专业的00后。不知不觉自学计算机已经几近一年时间,起初是听说互联网行业是朝阳产业。具有无限的发展潜力,开始抱着了解了解的态度学习了计算机知识。起初听我一个亲戚可以从C语言学起,我就开始了我的C语言学习之路。看的第一本书是机械工业出版社的C程序设计语言,断断续续的看了几个月。后来又接触了一本较为简单的谭浩强的C程序设计语言。尽管这本书被很多人所诟病。但是我系统的
2021-06-03 09:40:45 453 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人