- 博客(75)
- 收藏
- 关注
原创 二叉树--递归遍历--层次遍历--非递归遍历--详解
/数据结构--树-------------------------------------------------------------------------//二叉树非递归遍历---------------------------------------------------------------------//二叉树--------------------------------------------------//将node指向上一层的结点,访问后,便可继续遍历右子树,层层退出来。
2024-08-31 12:09:14 934
原创 字符串的暴力匹配和KMP算法
/字符串的暴力匹配---------------------------------------------------------------------//字符串匹配的KMP算法------------------------------------------------------------------//当master字符串中的字符与sub字符串首元素相同时,二者同时往后迭代比较。//两个字符串都未遇到字符串结束标志时,执行循环比较。//求出next数组-----------------
2024-08-28 13:02:40 385
原创 数组循环队列的实现
/循环队列--------------------------------------------------------------------------// tail+1的下标位置取模整个空间所有元素个数,所得到的位置与front相同,//用tail+k取模k+1,得到的值便为tail-1下标所在的元素。//因为开辟了k+1个空间,如果front==tail,说明队列为空。//因为是循环队列,又开辟了k+1个空间,当tail循环时,//取队尾,则要取tail-1下标所在的元素。//队头(数组下标)
2024-08-26 14:01:31 278
原创 队列操作--附两个队列实现栈操作
/ 队列---------------------------------------------------------------------------------//断言QuequeEmpty(队列是否为空)的真假,非真则报错,非假继续。//断言QuequeEmpty(队列是否为空)的真假,非真则报错,非假继续。//断言QuequeEmpty(队列是否为空)的真假,非真则报错,非假继续。//不为空返回假(即返回判断不成立),为空返回真(队列为空)//两个队列实现栈----------------
2024-08-26 11:30:10 768
原创 栈的操作--数组栈判断有效括号序列--两个栈实现队列--题解
栈------------------------------------------------------------------------------------//初始化时,top为0,top指向栈顶数据的下一个,x插入后再top++//初始化时,top为-1,top指向栈顶数据,先top++,再插入。// 头为栈顶,尾为栈底,头插头删,单链表。// 数组栈:头为栈底,尾为栈顶,尾插尾删(推荐优先)// 链式栈:头为栈底,尾为栈顶,尾插尾删,双链表。//指向增容后的空间。
2024-08-24 15:27:56 401
原创 带头双向循环链表的增删查改
/phead为哨兵位的头结点,打印从phead->next指向的结点开始。//phead为哨兵位的头结点,查找从phead->next指向的结点开始。//返回x所在的位置pos。//尾节点的next指向的是哨兵位的头结点,遇到头结点停止打印。//尾节点的next指向的是哨兵位的头结点,遇到头结点停止查找。//哨兵位头结点指向的不是自己,保证链表内部有有效结点。//哨兵位头结点指向的不是自己,保证链表内部有有效结点。//开始销毁,直到cur指向哨兵位phead结点。//找到要删除的头部结点的下一个结点。
2024-08-23 21:08:24 443
原创 单链表的增删查改
/将指向pos结点,改为pos指向的下一个结点。//while (tail->next->next)//二级访问,使tail停在尾结点的上一个结点。//newnade结点指向pos的位置。=pos)//找到指向pos的结点。= NULL)//找到尾结点。//释放上一个结点指向的尾结点空间。if (pos == *phead)//如果pos在头部位置,进行头插。//释放pos的空间。
2024-08-23 14:42:59 307
原创 复制带随机指针的链表
/原链表的下一个结点位置随着cur也往后迭代。//复制链表的当前位置随着cur往后迭代。//copy->random指向cur->random指向的结点的下一个结点,即next,// 通过桥接,使复制链表的random指向的位置于原链表相同。//cur往后移到next的位置。//根据原结点的random处理copy的random。//解开原链表和复制链表,还原原链表,链接复制的链表。//原链表的当前结点位置。//copy指向复制链表的起点。//copy结点并插入原链表结点后面。//cur迭代往后遍历。
2024-08-22 21:21:24 423
原创 常见的链表题解
while (fast && fast->next)//奇数个fast->next不为NULL,偶数个fast不为NULL。//tail的地址往后移,记录了当前l1结点的位置,方便尾插。//当前tail->next指向l1的结点。//当前tail->next指向l2的结点。//当前tail->next指向l1的结点。//当前tail->next指向l2的结点。//当前tail->next指向l1的结点。//当前tail->next指向l2的结点。
2024-08-22 15:59:26 331
原创 指针的意义
指针------------------------------------------------------------------------------------------// //char* pc = &a;// double* p *p解引用能访问8个字节。// char* p *p解引用能访问1个字节。// int* p *p解引用能访问4个字节。// int* p;// 2,指针和指针类型---------// 1,指针是----------
2024-07-29 10:06:39 403
原创 const修饰指针变量
/const 修饰指针变量-------------------------------------------------------------------------------const int* const pb = #//const 放在int*左边,修饰的是*pb,p指向的值不能被修改。//const 放在int*左边,修饰的是*p,p指向的值不能被修改。//const 放在int*右边,修饰的是pb,pb指向的地址不能被修改。
2024-07-27 18:11:05 352
原创 动态内存分配
/ 1,需要调整的空间大小在闲置的连续空间大小范围内,可以用原来开辟空间的地址。//释放动态开辟的空间,此时p的地址还在,为防止恶意破坏。
2023-07-27 09:51:14 111
原创 strncmp/strstr 模拟实现
(*p1 - *p2))//逆反逻辑,非0为真,假假为真。//不改变str1 和str2。p1 = start;//p1需要记住与str2字符相同的那个位置。*p2)//逆反逻辑,非0为真,假假为真。p2 = str2;//p2初始化,用于下次匹配。*str2)//逆反逻辑,非0为真,假假为真。*p1)//p1 字符串小于p2。printf("不存在\n");
2023-07-24 16:10:26 50
原创 strcmp/strncpy/strncat模拟实现
dest--;if (!return ret;return ret;int main()return 0;count--;if (count)return ret;int main()return 0;return 0;str1++;str2++;
2023-07-24 10:55:41 56
原创 杨氏矩阵中是否包含k
else if (arr[x][y] > k)//i行右上角最大值大于k 换上一列。printf("包含,下坐标是arr[%d][%d]\n", x, y);if (arr[x][y] < k)//i行右上角最大值小于k 换下一行。//杨氏矩阵查找k是否存在 时间复杂数小于O(N),O(N)为穷举法用的时间。printf("不包含");int y = 3;
2023-06-11 22:02:36 424
原创 空瓶换汽水问题
int main(){ //方案1 int pay = 0; int sum = 0; scanf("%d", &pay); while (pay) { sum += pay; pay /= 2; } sum = sum + 1; printf("%d\n", sum); //方案2 int money = 0;//多少钱 int total = 0;//喝的瓶数 int
2023-06-09 19:22:16 526
原创 水仙花数和凌形
/输入上半部分的行数。//2,计算i的每一位数n次方之和 sum。//判断i是否为水仙花数(自幂数)//3,比较i == sum。//1,计算i的 n位数;
2023-06-08 20:42:40 499
原创 经典函数指针回调
/转移表 函数指针数组。Calc(Add);//函数回调 解决代码冗余(重复)// printf("请输入两组操作数: ");printf("选择错误\n");// printf("选择错误!// printf("退出\n");printf("退出\n");printf("请输入两组操作数:");printf("请选择:>");
2023-05-28 19:52:11 794
原创 函数指针和函数指针数组
/函数指针——指向函数的指针 存放函数地址。// //signal是一个函数指针,函数的两个参数(int类型,函数指针返回void的类型)// //signal的返回类型是一个函数指针,指向的函数参数是int类型,返回void的类型。// //*pa(2,3) err 错误写法。
2023-05-28 19:47:35 1262
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人