
C
文章平均质量分 53
小洋洋呢
一个菜狗的日常
展开
-
多维数组的存储计算
推荐一个写的比较好的文章(https://zhuanlan.zhihu.com/p/88247982)转载 2021-11-02 20:53:43 · 276 阅读 · 0 评论 -
数据结构与算法之哈夫曼树与哈夫曼编码
哈夫曼树对于哈夫曼树,凡是学过离散数学的同学肯定不会陌生,这里我们简略它的介绍。哈夫曼树就是最优二叉树,即叶子个数和各个叶子的权值确定的情况下,树的带权路径长度(树中所有叶子结点的带权路径(带权路径即结点到树根的路径长度与结点权的乘积)之和)WPL最小。具体画哈夫曼树的方法见:https://jingyan.baidu.com/article/a501d80c16dfa0ec620f5e70.html对于哈夫曼树的存储我们一般采用静态三叉链表,如下所示:weight:权值Parent:双亲结点原创 2021-11-02 19:41:13 · 3675 阅读 · 0 评论 -
PTA练习之约瑟夫问题
Josephus问题描述:编号为1,2,…,n的n个人按顺时针方向围坐在一张圆桌周围,每人持有一个密码(正整数)。一开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数,报m的那个人出列,将他的密码作为新的m值,从他顺时针方向的下一个人开始重新从1报数,数到m的那个人又出列;如此下去,直至圆桌周围的人全部出列为止。要求按出列顺序输出n个人的编号。输入格式:第一行输入两个整数,依次表示人数n和初始化密码m,以空格间隔。 第二行依次输入n个整数,分别表示n个人的密码原创 2021-09-12 15:00:10 · 3493 阅读 · 0 评论 -
数据结构与算法学习笔记(二)单链表的逆置与循环链表
单链表的逆置思路:现将头表置空,随后使用头插法进行操作。具体单链表操作见文章:链表的基本操作分别定义两个指针一个指向移动的数据,另一个指向下一个数据进行移动。void Reverse_linklist(Linklist H){ Linklist p, q; p = H->next; H->next = NULL;//置空表 while(p) { q = p; p = p->next; q-&g原创 2021-09-12 10:25:03 · 279 阅读 · 0 评论 -
数据结构与算法学习笔记(一) 顺序表
学校开始了数据结构与算法的课程,为了巩固学习,对此课程进行了总结和记录以及练习。顺序表的插入、删除和查找#include <stdio.h>#include <stdlib.h>#define Maxsize 10这里的Maxsize 为顺序表可能达到的最大长度,这里的线性表,我选择使用int型的简单数据存储顺序表的定义typedef struct List{ int elem[Maxsize];//存储当前空间 int length;//线性表的长原创 2021-09-06 20:29:30 · 166 阅读 · 1 评论 -
数据结构学习笔记之队列和栈
初学队列queue引例:解密QQ号解密规则如下:给入一串数字,首先将第一个数删除,再将第二个数放在末尾,再删除第三个数将第四个数放在末尾,再将第五个数删除······以此类推·最后把删除的数字依次序读出。例如:123456 ==> 34562 ===> 5624 ===> 246 ===> 64 ===>4======> 135264我们引出两个整型变量 head和tail。head用来记录队列的队首,tail用来记录队列的对尾的下一个位置。我们在这里利用队原创 2021-05-24 21:45:08 · 556 阅读 · 0 评论 -
递归
#递归练习##什么是递归? 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,原创 2021-04-14 20:05:36 · 109 阅读 · 0 评论 -
初学C之 二进制转换问题
#二进制转换要求:32位机器,输入数字不考虑负数。这里我们只谈代码(初学者适用)://转换二进制,num [0~36327]#include<stdio.h>//不会补全 void Convertbinary1 (int num){ if(num==0) { printf("0"); } while(num) { if(num%2) printf("1"); else print原创 2021-04-09 21:16:15 · 123 阅读 · 0 评论 -
LeetCode 每日一题: 数字的补数
#Numbwe Complement题目描述:给你一个 正 整数 num ,输出它的补数。补数是对该数的二进制表示取反。示例 1:输入:num = 5输出:2解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。示例 2:输入:num = 1输出:0解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-co原创 2021-04-09 20:56:54 · 495 阅读 · 0 评论