
C/C++
超大板栗
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
google protobuf数据类型
要通信,必须有协议,否则双方无法理解对方的码流。在protobuf中,协议是由一系列的消息组成的。因此最重要的就是定义通信时使用到的消息格式。Protobuf消息定义消息由至少一个字段组合而成,类似于C语言中的结构。每个字段都有一定的格式。字段格式:限定修饰符① | 数据类型② | 字段名称③ | = | 字段编码值④ | [字段默认值⑤]①.限定修饰符包含 required\optional\repeatedRequired: 表示是一个必须字段,必须相对于发送方,在发送消息之前.原创 2020-11-22 22:09:42 · 2433 阅读 · 0 评论 -
C语言数据结构之如何快速查找链表的中间节点
腾讯面试题:如何快速查找指定链表的中间节点?解法1:遍历法。先遍历一遍统计链表长度,然后再遍历长度的1/2便即是中间节点。 时间复杂度O(3n/2)解法2:快慢指针。(推荐) 设置两个指向链表头结点的指针,一个指针的遍历速度是另一个指针的2倍,当快的指针遍历完毕,慢指针即是中间节点。 时间复杂度O(n/2)解法二比解法一速度快了足足3倍,可见算法的威力。解法二代码:Lin...原创 2020-09-19 23:09:52 · 1338 阅读 · 1 评论 -
C语言数据结构之双向循环链表
双向循环链表: 简单的来说,双向循环链表比单向循环链表多了一个节点previous. C语言结构: typedef struct duplexNode{ char alphabet; struct duplexNode * previous; struct duplexNode * next;}DuplexNode,*DuplexLinkList;问题:...原创 2018-02-17 11:14:27 · 337 阅读 · 0 评论 -
C语言实现Vigenere(维吉利亚)加密
维吉尼亚密码人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。该方法最早记录在吉奥万·巴蒂斯塔·贝拉索( Giovan Battista Bellaso)于1553年所著的书《吉奥万·巴蒂斯塔·贝拉索先生的密码》(意大利语:La cifra del. Sig. Giovan Battista Bellaso)中。维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替...原创 2018-02-17 11:53:15 · 7079 阅读 · 0 评论 -
C语言数据结构之用线性顺序存储结构实现栈
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈所具有的特性:先进后出(First In Last Out)和后进...原创 2018-02-18 12:43:07 · 471 阅读 · 0 评论 -
C语言数据结构之利用栈机制写的进制转换器
将各个进制转换重新整理了以下,用栈的灵活机制写了一个进制转换器。图:代码:Stack.h#ifndef _STACK_H_#define _STACK_H_#include <stdbool.h>#define STACK_INIT_SIZE 100 //栈控件初始化大小#define STACK_INCREMENT 10 //栈控件增量typedef struct{ ...原创 2018-02-23 20:31:00 · 900 阅读 · 0 评论 -
C语言数据结构之逆波兰表达式求值
逆波兰表达式又叫做后缀表达式。在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,这种表示法也称为中缀表示。波兰逻辑学家J.Lukasiewicz于1929年提出了另一种表示表达式的方法,按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。eg:1+1逆波兰表达式:1 1 +eg:1+(2-1)*3逆波兰表达式:1 2 1 - 3 * +实现截图:Stack.h#ifndef _...原创 2018-02-23 21:52:32 · 4631 阅读 · 0 评论 -
C语言数据结构之利用栈进行括号匹配的检验
括号匹配的检验: eg: [([][][)]] 不匹配 [([][])] 匹配思路: 0x0.首先建立两个栈,并对其初始化 0x1.对表达式进行遍历,将相邻两个不能匹配的入栈到栈A,然后检测栈空间A是否为偶数,如果是表明有存在的可能,如果不是则提示不匹配。0x2.检测栈空间A是否为偶数,如果是表明有存在的可能,如果不是则提示不匹配,遍历栈A,将不匹配的入栈...原创 2018-03-02 20:55:21 · 8478 阅读 · 1 评论 -
C语言数据结构之利用递归解hanoi塔
思路:将n-1个盘子移动到B柱将第n个盘子移动到C柱将n-1个盘子移动到C柱main6.c#include <stdio.h>void move(int n,char x,char y,char z);int main(void){ int n; printf("请输入n="); scanf("%d",&n); getchar();...原创 2018-03-03 20:56:45 · 535 阅读 · 0 评论 -
C语言数据结构之用递归解决八皇后问题
1.摘要:八皇后问题八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种计算机...原创 2018-03-04 11:18:47 · 1837 阅读 · 0 评论 -
C语言数据结构之实现顺序存储结构队列
队列:类似现实生活中的队列,队列所具有的特点是先进先出。图示:队列元素 1 212 入列 3123 出列 1 23 出列 2 3 c语言实现:实现代码:queue.h#ifndef _QUEUE_H_#define _QUEUE_H_#include <glob.h>#include <stdbool.h>#define QUQUE_LENGTH 100t...原创 2018-03-06 16:58:28 · 797 阅读 · 0 评论 -
C语言运算符优先级和结合性一览表
所谓优先级就是当一个表达式中有多个运算符时,先计算谁,后计算谁。这个其实我们在小学学算术的时候就学过,如1+4÷2。但是C语言中的运算符已经远不止四则运算中的加减乘除了,还有其他很多运算符。当它们出现在同一个表达式中时先计算谁后计算谁呢?所以本节还是有必要讲一下的。最后我还会将所有运算符展示出来,然后告诉你哪个优先级高、哪个优先级低。首先不需要专门记忆,也没有必要。因为作为初学者,哪个优先级高...转载 2019-01-18 15:07:44 · 2455 阅读 · 3 评论 -
C语言数据结构之用循环链表解决拉丁方阵
拉丁方阵(英语:Latin square)是一种 n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次eg: 1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5代码:#include <stdio.h>#include <...原创 2018-02-16 22:15:51 · 1058 阅读 · 2 评论 -
C语言数据结构之用循环链表解决魔术师发牌问题
问题描述:魔术师利用一副牌中的13张黑桃牌,预先将他们排好后叠放在一起,牌面朝下。对观众说:“我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示。”魔术师将牌堆最上面的哪张排数为1,把他翻过来正好是黑桃A,将黑桃A从牌堆抽出放在桌子上,第二次数1、2,将第一张放在牌堆最下面,第二张翻开,正好是黑桃2,也将它抽出放在桌子上。这样依次进行将13将牌全部翻出,准确无误。问牌最开始...原创 2018-02-16 21:02:38 · 931 阅读 · 0 评论 -
c语言数据结构之顺序线性表的合并、并集
//#include "list_test.c"//#include "link_list_test.c"#include "List.h"#include "LinkList.h"#include "utils.c"void MergeList(const List * l1,const List * l2,List * l3);void list_union(List * ...原创 2018-02-10 21:34:12 · 6406 阅读 · 0 评论 -
C语言数据结构之顺序线性链表的合并
void MergeLinkList(LinkList * l1,LinkList * l2,LinkList * l3){ struct Node * na,*nb; na = l1->item; nb = l2->item; while(na && nb) { if(na->value >= n...原创 2018-02-10 22:49:16 · 608 阅读 · 0 评论 -
C语言数据结构之利用栈将中缀表达式转换为后缀表达式
C语言数据结构之利用栈将中缀表达式转换为后缀表达式方法:利用栈的特性来解析中缀表达式,最后输出后缀表达式 具体: 如果是数字则输出 如果是'('入栈 如果是')'将'('到')'的内容输出 如果是'+' '-',如果栈为空则入栈,如果不空将栈里面的内容输出或者输出到'(' ...原创 2018-02-26 14:23:08 · 2548 阅读 · 0 评论 -
C语言数据结构之动态数组
List.h#include typedef struct list{ int length; int * data;} List;//初始化动态数组void InitList(List * list);//销毁动态数组void DestroyList(List * list);//查看列表是否为空bool ListIsEmpty(const List原创 2018-02-06 15:15:55 · 2803 阅读 · 1 评论 -
C语言数据结构之双向链表
= = 实现了链表的CRUD和一些其他的函数比如应用所有元素于函数、初始化、销毁....Code:main.c//#include "list_test.c"#include "link_list_test.c"int main() {// list_test(); link_list_test(); return 0;}LinkList.h原创 2018-02-07 03:35:56 · 281 阅读 · 1 评论 -
c语言数据结构之静态链表
静态链表,一般用于在没有指针等灵活操作内存的高级语言中,如早期的Basic、Fortran等编程语言,静态链表这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。 在C语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域data和游标CUR。用c语言定义为:struct{ int c...原创 2018-02-14 17:04:16 · 727 阅读 · 0 评论 -
C语言数据结构之静态链表实现(A-B)U(B-A)
时间复杂度O(3n)不是很难,直接贴代码:StaticLinkList.h#ifndef _STATIC_LINK_LIST_H_#define _STATIC_LINK_LIST_H_#define MAXSIZE 100typedef enum {ERROR,OK}Status;typedef struct{ int cur; int data;}StaticLi...原创 2018-02-14 20:43:26 · 1164 阅读 · 0 评论 -
C语言数据结构之如何快速查找链表的中间节点
腾讯面试题:如何快速查找指定链表的中间节点?解法1:遍历法。 先遍历一遍统计链表长度,然后再遍历长度的1/2便即是中间节点。 时间复杂度O(3n/2)解法2:快慢指针。(推荐) 设置两个指向链表头结点的指针,一个指针的遍历速度是另一个指针的2倍,当快的指针遍历完毕,慢指针即是中间节点。 时间复杂度O(n/2)解法二比解法一速度快了足足3倍,可见算法的威力。解法二代码:Lin...原创 2018-02-14 21:22:16 · 3232 阅读 · 0 评论 -
C语言数据结构之利用循环链表解决约瑟夫问题
约瑟夫问题:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k...原创 2018-02-15 14:27:57 · 757 阅读 · 0 评论 -
C语言数据结构之循环链表的合并操作
循环链表的和并:只需把将链表2的最后一个节点的下一个节点等于链表1的头结点的下一个节点, 链表1的头结点的下一个节点 = 链表2的头结点的下一个节点, 最后将链表2的头结点给释放掉就实现了循环链表的合并操作。图示:图画的比较潦草。汗!实现代码:main5.c#include <stdio.h>#include <mal...原创 2018-02-16 00:34:24 · 1645 阅读 · 0 评论 -
C语言数据结构之判断单链表中是否有环
判断单链表中是否有循环链表的方法通常有两种:/**方法一: * 2个指针,一个指针依次遍历,一个指针遍历所在位置次,若遍历次数不相等说明有闭合环路 */* 方法二:快慢指针,一个指针的移动速度是另一个指针移动速度的1倍,* 如果当慢速的指针遍历过程中出现快指针和慢指针相等则说明有环代码:#include <stdio.h>#include <malloc.h>#...原创 2018-02-16 01:32:05 · 2627 阅读 · 0 评论 -
c语言数据结构之实现一元多项式的加减运算
实现结构:单项链表思路:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去,减法亦然。main.c#include <stdio.h>#include <malloc.h>#include "poly.h"#include "lArray.h"void ...原创 2018-02-10 00:08:48 · 12966 阅读 · 2 评论