- 博客(83)
- 收藏
- 关注
原创 数据结构----栈和队列
栈篇1.1栈栈,线性表的一种特殊的存储结构。与学习过的线性表的不同之处在于栈只能从表的固定一端对数据进行插入和删除操作,另一端是封死的。由于栈只有一边开口存取数据,称开口的那一端为“栈顶”,封死的那一端为“栈底”(类似于盛水的木桶,从哪进去的最后还得从哪出来)。1.2.栈操作数据元素的两种动作:数据元素用栈的数据结构存储起来,称为“入栈”,也叫“压栈”。 数据元素由于某种原因需要从栈结构中提取出来,称为“出栈”,也叫“弹栈”。注意:栈遵循先进后出原则1.3.栈的表示方式既然栈
2022-05-19 16:39:17
1920
12
原创 数据结构------双向带头循环链表
1.什么是双向带头循环链表?模型。上次写的链表是单向的,就是只去不会,但是我想让他有来有回所以叫单向,带头是创建一个哨兵位头结点,但不影响实际写的链表。循环我就不解释了。上模型:2.初始化链表ListNode* BuyListNode(SLTDateType x){ ListNode* node = (ListNode*)malloc(sizeof(ListNode)); //开辟一个结点 if (node == NULL) { perror(
2022-05-13 11:00:22
502
6
原创 【数据结构】单链表
1.顺序表与链表的优劣1.1顺序表优点:1物理空间连续,2.可以实现下标随机访问。缺点:1.空间不够要扩容,所以有一定空间浪费和空间消耗。2.头部或中间位置插入删除效率低。改善方案:1.按需申请空间,需要一个空间开辟一个。2.头部,中间插入删除不挪动数据。——————链表1.2链表#pragma once#include<stdio.h>#include<assert.h>#include<string.h>#incl
2022-05-11 22:57:47
446
2
原创 PTA----字母子集合
最近刷题遇见一个不错的题,分享一下!这题啥意思呢?先写一个数组存A-Z,输入一个数,输出它的所有子集(包括空集)如果输入3,代表A, B, C的所有子集,并用他们三个表示。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>void my_print(char a1[], int count){ int i, j, tmp; int Sum = 1 << count; /.
2022-05-02 16:32:03
273
7
原创 【数据结构】顺序表实现增删查改
目录1.顺序表的创建1.1 静态版1.2动态版2.顺序表初始化2.1传值初始化2.2传址初始化3.实现尾插4.打印函数5.头插6.检查空间容量7.尾删8.释放空间函数9.头删10.在某处插入11.某地方删除12.查,改13源代码1.顺序表的创建1.1 静态版#pragma once#include<stdio.h>#include<string.h>#include<stdlib....
2022-04-30 22:05:33
1438
9
原创 找单身狗与与“atoi”函数的模拟实现
1找单身狗一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字。例如{1,2,3,4,5,1,2,3,4,6}找两条单身狗这题最难的是咋分组?不知道各位听过按位异或没?就是两个二进制数进行异或,相同为0,相异为1。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void fingle_dog(int a2[], int sz){ int i = 0; int
2022-04-12 19:18:50
583
8
原创 分支与循环语句2
1.do while循环它的循环过程如下:来,继续分析一下break,continue的作用很明显,和while,for循环的一样!2.有序数组的二分查找,必须是有序数组,无序就emo了。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){ int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int k = 0; scanf("%d", &k);
2022-04-10 15:26:23
367
4
原创 分支与循环语句1
1分支语句:1.1if语句if(表达式) {语句}。if最常用的是和else联用。那我问个问题:能不能写成6<n<18?如果这样写,判断条件又是怎样的呢?为啥还是这情况呢?分析一下(6<n<18) 括号内是从左往右依次计算的输入10,6<10为真,返回1所以把6<n这部分换成1,1<18为真,所以打印“青少年”这里挺有意思的。注意if的表达式中0表示假,非0表示真,如-1也是非0,所以它也表示真。1.2悬空else看一下.
2022-04-09 18:06:23
880
4
原创 动态内存管理
1.为啥存在动态内存开辟?在c/c++语言中,编写程序有时不能确定数组应该定义为多大,因此这时在程序运行时要根据需要从系统中动态多地获得内存空间。所谓动态内存分配,就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。动态内存管理:malloc,calloc,realloc,free。都存放在堆区。头文件都可以是<stdlib.h>2.mal
2022-04-05 10:45:32
1374
8
原创 回调函数实现冒泡排序及其模拟实现
1.对于一组数实现冒泡排序最普通操作#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int main(){ int a[7] = { 0 }; int tmp = 0; while (scanf("%d %d %d %d %d %d %d", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6]) != EOF)
2022-04-04 21:18:38
1127
13
原创 结构体,枚举,联合
1.结构体目录1.匿名结构体2.结构体自引用3内存对齐4.嵌套对齐5.位段2.枚举3.联合1. 1.匿名结构体 :就是不起名的意思,注意匿名结构体只能用一次。如果两个匿名结构体的成员类型一样在编译器看来也是不同类型。看见报错了吧,所以只能用一次,这不是重点,一般很少用。2.结构体自引用:结构体中自己调用自己呗3.结构体内存对齐(重点知识)内存对齐原因:1.平台原因:一些资料上是这样说的,“不是所有的硬件平台都能访问任意地址上的任意数据...
2022-04-03 20:33:13
2784
21
原创 简洁版通讯录实现
1.结构体,枚举,联合体目录1.结构声明2.特殊声明3.结构体自引用4.结构体内存对齐5.结构体传参6.位段定义7.位段开辟空间8.枚举,联合关键字9枚举10 联合体1结构体声明
2022-03-31 23:54:39
347
10
原创 库函数续写(strtok,memcpy,memmove)
1.strtok函数的作用是实现切割返回类型是char*,char*strtok(char*str,char*sep)
2022-03-27 20:11:09
159
20
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅