首页 文章 精选 留言 我的

精选列表

搜索[c语言压缩库],共10035篇文章
优秀的个人博客,低调大师

C语言操作mysql预处理的封装

mysql预处理的优点在于 1.安全性高.预处理变量用占位符?表示,与sql语句是分别传递给服务器,安全性相对比较高. 2.占用流量低.在sql语句已经发送的情况下,只要发送绑定变量的不同值即可. 然而mysql预处理也有一个很大的缺点,就是大量变量绑定的代码,可读性极差,冗余重复代码很多. 我们思考预处理如何做到扬长避短,将冗余代码不放在mysql预处理封装的代码中,而是放在结构体初始化的文件中.这样在结构体初始化的繁琐要好过预处理时的繁琐. 然而结构体的成员变量如何与预处理的bind关联呢? 答案无非是数组.输入数组关联预处理的绑定参数,输出数组关联预处理的绑定结果. 数组的数据来源是结构体,结构体如何将成员变量交接给数组呢? 于是我们冥思苦想发现这个预处理的封装是系统性的工程.需要借助第三方的一些代码完成任务.比如想要把结构体成员对象存取,最好的办法不外乎是hashmap,对输出结果的返回最通用的结构体不外乎是json.因此需要引入hashmap和json. 这样还需要设计一个场景,存取结构体成员,于是我们想到了数据表的crud通用操作.接下来就是设计各个crud的函数用hashmap存取结构体变量.大致流程如此. 代码参考gtee开源仓库https://gitee.com/solider12/lazy-cats-code-warehouse/tree/master

优秀的个人博客,低调大师

用栈解决N皇后问题(C语言

点击上方蓝字关注"程序员Bob"呀~ 孩子不是图画练习册,你不能随心所欲涂上你想要的颜色。 ——《追风筝的人》 问题描述:输入一个整数n,输出对应的n皇后问题的解的个数 在解决N皇后问题之前,我们得知道皇后问题的来源。 首先最开始的是八皇后问题,是由国际西洋棋棋手马克斯·贝瑟尔于1848年提出的问题,也是回溯算法的典型案例。 起初问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。 当然,随着计算机的发展,现在我们可以用程序来解决此类问题。 下面代码用到栈的知识,用栈装载了每一行放置的皇后的坐标,通过入栈与出栈,实现回溯。栈的结构为双链表结构。 源代码如下: #include <stdio.h>#include <stdlib.h>typedef struct Queen{ int x; int y;}Queen;typedef struct ListNode{//建立结点 Queen q; struct ListNode *Next;//指向前一个结点 struct ListNode *Last;//指向后一个结点}ListNode;typedef struct List {//建立双向链表 struct ListNode *header; struct ListNode *trailer; int _size;}List;void CreateList(List *l);void InsertList(List *l,Queen e);Queen PopList(List *l);void InsertBefore(int i,Queen e,List *l);void CreateList(List *l){ l->_size=0; l->header= (ListNode*)malloc(sizeof(ListNode)); l->trailer=(ListNode*)malloc(sizeof(ListNode)); l->header->Next=l->trailer; l->header->Last=NULL; l->trailer->Last=l->header; l->trailer->Next=NULL;}void InsertList(List *l,Queen e){//在尾结点之前插入数据 ListNode *np=(ListNode*)malloc(sizeof(ListNode)); np->q.x=e.x; np->q.y=e.y; np->Next=l->trailer; np->Last=l->trailer->Last; l->trailer->Last->Next=np; l->trailer->Last=np; l->_size++;}void InsertBefore(int i,Queen e,List *l){//在第i项前插入e int j; ListNode *p=l->header->Next; for(j=0;j<i;j++){ p=p->Next;//定位到第几项 } ListNode *np=(ListNode*)malloc(sizeof(ListNode)); np->q.x=e.x; np->q.y=e.y; np->Next=p; np->Last=p->Last; p->Last->Next=np; p->Last=np; l->_size++;}void PushList(List *l,Queen e){//入栈 ListNode *np=(ListNode*)malloc(sizeof(ListNode)); np->q.x=e.x; np->q.y=e.y; np->Last=l->header; np->Next=l->header->Next; np->Next->Last=np; l->header->Next=np; l->_size++;}Queen PopList(List *l){//出栈 ListNode *now=l->header->Next; Queen old=now->q; now->Next->Last=now->Last; l->header->Next=now->Next; free(now); l->_size--; return old;}int placeQ(int N){ int solution_n = 0; int i; List solution; CreateList(&solution); Queen q; q.x=0; q.y=0; int *xarray=(int*)calloc(N,sizeof(int)); int *yarray=(int*)calloc(N,sizeof(int)); int *sumarray=(int*)calloc(2*N,sizeof(int)); int *diffarray=(int*)calloc(2*N,sizeof(int)); for(i=0;i<N;i++){ xarray[i]=yarray[i]=0; } for(i=0;i<N*2;i++){ sumarray[i]=diffarray[i]=0; } do{ if(N<=solution._size ||N<=q.y) { Queen tmp = PopList(&solution); q.x = tmp.x; q.y = tmp.y; xarray[q.x]=0;//防止行冲突 yarray[q.y]=0;//防止列冲突 sumarray[q.x+q.y]=0;//存储信息,防止对角线冲突 diffarray[q.x-q.y+N]=0;//防止另一条对角线冲突 q.y++; } else { while ((q.y < N) && ((xarray[q.x] == 1) || (yarray[q.y] == 1) || \ (sumarray[q.x + q.y] == 1) || (diffarray[q.x - q.y + N]) == 1)) { q.y++; } if (N > q.y) { PushList(&solution, q); xarray[q.x] = 1; yarray[q.y] = 1; sumarray[q.x + q.y] = 1; diffarray[q.x - q.y + N] = 1; if (N <= solution._size) { solution_n++; } q.x++; q.y = 0; } } } while((q.x>0)||(q.y<N)); return solution_n;}int main() { int num; scanf("%d",&num); //scanf_s("%d",&num); //进行边界检查,VS支持 //printf_s("%d",placeQ(num));//检查字符是否有效 printf("%d",placeQ(num)); return 0;} 运行结果如下: 最后的话:刷题要找自己的不足,然后去专攻。 往期推荐: 十一月碎碎念 || 假如时间只剩31天 2020-12-01 《流浪猫鲍勃》:一人一猫,彻底温暖了整个冬天 2020-11-28 来学Python啦,浅谈函数 2020-11-26 为你,千千万万遍. 关注程序员Bob公众号,与你一起终生学习 一键三连,就差你了 本文分享自微信公众号 - 程序员Bob(gh_8a1a1530d0bf)。如有侵权,请联系 support@oschina.cn 删除。本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册