数据结构与算法实验题5.1排序★实验任务通过交换元素位置实现排序的算法通常称为交换排序算法。
如果只允许交换相邻元素的位置,则称为相邻交换排序算法,如冒泡排序算法。
给定n个待排成升序的整数,求出相邻交换排序算法交换元素位置的最少次数。
★数据输入输入第一行为一个正整数n(n<=500000)输入第二行为n个整数,这些整数可能有相同的。
★数据输出输出相邻交换排序算法交换元素位置的最少次数。
PS:请用longlong来计算次数,输入输出请用scanf,printf
2023/11/20 21:39:31 718B g1 b2
1
同时使用STM32三个串口的接收与发送,串口1使用printf(),串口2使用u2_printf(),串口3使用u3_printf().接受采用定时器中断超时,5ms未接收到数据认为本次接收结束,置位相应的标志位,主程序检测并处理接收数据。
2023/11/18 12:51:15 6.59MB UART,STM32
1
/*这是一个在字符环境中,用ASCII码打印二叉树形状的算法。
采用层次遍法。
算法拙劣,仅供初学者做练习,(本人也是初学者,自学数据结构,刚好学到这二叉树这一章,搞几个二叉的例题,却不知道其构造形状,想调用图形API做个美观点的,却有点偏离本章的学习目的,只好用字符打印,linux环境中打印的还可以,DOS屏幕如果不够宽您输出到文本,如果您有更好的算法一定不吝赐教。
我的QQ:137241638mail:hnflcp@139.com*/voidPBTNodePrint(PBTNode*pb[],intn,inth){ intl=-1, r=0, i,j,k, end; charc; PBTNode*p; if(ndata); printf("\n"); return; } h=h-pb[0]->level+2; for(k=0;kparent->space; for(;jlrflag==0)?'/':'\\'; printf("%c",c); } printf("\n"); } for(i=0;ilrflag==0) p->space=p->parent->space+l; else p->space=p->parent->space+r; } for(i=0,j=0;idata); } printf("\n");}//循环打印所有层的数据
1
STM32f103三个串口DMA设置,包括串口设置、DMA设置、NVIC设置,systick,printf重定向,USART1_Printf等。
2023/11/3 19:18:16 1.66MB STM32 DMA USART1 USART2
1
1.经过以下栈运算后,x的值是()。
InitStack(s);Push(s,'a');Push(s,'b');Pop(s,x);Gettop(s,x);A.aB.bC.1D.02.循环队列存储在数组A[0..m]中,则入队时的操作为()。
A.rear=rear+1B.rear=(rear+1)mod(m-1)C.rear=(rear+1)modmD.rear=(rear+1)mod(m+1)3.栈和队列的共同点是()。
A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点4.若用一个大小为6的数组来实现循环队列,且当rear和front的值分别为0和3。
当从队列中删除一个元素,再插入两个元素后,rear和front的值分别为:()。
A.1和5B.2和4C.4和2D.5和15.程序填顺序循环队列的类型定义如下:typedefintET;typedefstruct{ET*base;intFront;intRear;intSize;}Queue;QueueQ;队列Q是否“满”的条件判断为(C)。
A.(Q.Front+1)=Q.RearB.Q.Front=(Q.Rear+1)C.Q.Front=(Q.Rear+1)%Q.sizeD.(Q.Front+1)%Q.Size=(Q.Rear+1)%Q.size6.若进栈序列为1,2,3,4,进栈过程中可以出栈,则()不可能是一个出栈序列。
A.3,4,2,1B.2,4,3,1C.1,4,2,3D.3,2,1,47.向顺序存储的循环队列Q中插入新元素的过程分为三步:()。
A.进行队列是否空的判断,存入新元素,移动队尾指针B.进行队列是否满的判断,移动队尾指针,存入新元素C.进行队列是否空的判断,移动队尾指针,存入新元素D.进行队列是否满的判断,存入新元素,移动队尾指针8.关于栈和队列,()说法不妥。
A.栈是后进先出表B.队列是先进先出表C.递归函数在执行时用到栈D.队列非常适用于表达式求值的算符优先法9.若用数组S[0..m]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。
为这两个栈分配空间的最佳方案是()。
A.S1的栈底位置为0,S2的栈底位置为mB.S1的栈底位置为0,S2的栈底位置为m/2C.S1的栈底位置为1,S2的栈底位置为mD.S1的栈底位置为1,S2的栈底位置为m/2二、程序填空题(没特别标注分数的空的为3分,共23分)。
1.下面的算法是将一个整数e压入堆栈S,请在空格处填上适当的语句实现该操作。
typedefstruct{int*base;int*top;intstacksize;}SqStack;intPush(SqStackS,inte){if(S.top-S.base>=S.stacksize){S.base=(int*)realloc(S.base,(S.stacksize+1)*sizeof(int));if(!S.base){printf(“NotEnoughMemory!\n”);return(0);
2023/9/21 10:03:21 18KB C语言 数据结构 第三章 作业
1
while(1){key_num=AS608_get_keynum(0,170);if(key_num){printf("\r\nkey_num:%d\r\n",key_num);if(key_num==1||key_num==3)Handle();//处理if(key_num==13)LED0=0;//开灯if(key_num==15)LED0=1;//关灯}}
2023/9/9 2:07:09 8.56MB STM32 TFTLCD
1
STM32_TCS34725数字颜色传感器,printf串口直接打印RGB的值,只需要4根线与传感器连接
2023/9/1 0:04:50 275KB TCS34725颜色
1
易用而又强大的C++跨平台日志库,可以输出日志到控制台窗口,文件,http服务器。
特点:#printf风格的接口,包括LOGA__,LOGW__,LOG__,LOGBIN__,LOGBIN_F__#日志附加信息包括时间,源代码文件,函数,行号#每个日志对象都有单独的行为#在程序运行时通过配置ini文件动态改变日志行为#可以输出到控制台窗口,文件,http服务器#线程安全#跨平台(windows,linux)
2023/8/24 17:44:37 22KB c++ log windows linux
1
STM32CubeMX6.0+STM32F407+FreeRTOS+lwip2+mqtt.。
网络设备ETH:DP83848,printf串口打印uart5。
支持FreeRTOS,mqttclient支持两个消息订阅,一个消息发布。
2023/8/5 14:55:02 32.65MB STM32F407 freertos LWIPnetwork MQTT
1
发送中文短信,会用到UCS2编码,很多网友反应中文发送和接收乱码,这个烦恼可以解决了。
注意:要在系统配置里增加LANG=zh_CN.GB18030exportLANG语言配置不对,这个函数会出错的,另外,例子有点问题,换一个好了intmain(){unsignedchar*str="新年快乐,Linux";unsignedcharucs2str[1024],gbkstr[1024];intlen,i;len=EncodeUCS2(str,ucs2str);ucs2str[len]=0;for(i=0;i<len;i++)printf("%02X",ucs2str[i]);printf("\n");puts(ucs2str);len=DecodeUCS2(ucs2str,gbkstr,len);gbkstr[len]=0;puts(gbkstr);}多谢你的关注!QQ:364604751
2023/7/18 10:48:51 1KB UCS2 短信 编码 转换
1
共 65 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡