周周记
文章平均质量分 77
oldwang1999
陕西科技大学第一诸葛亮
展开
-
整形在内存中存储
一个变量的创建是要在内存中开辟空间的,空间的大小是根据不同的类型而决定的;我们知道创建一个整形需要分配4个字节的空间,那它是如何让存储的呢?通过学习,我们知道对于整形来说:数据存放内存中其实存放的是补码。先来了解一下源码,反码,补码。源码:直接将二进制按照正负数的形式翻译成二进制就可以。反码:将源码符号位不变,其他位依次按位取反。补码:反码+1。看代码#include<stdio>i...原创 2018-04-15 23:25:48 · 289 阅读 · 0 评论 -
自定义类型:结构体,枚举,联合
1,结构体 结构体变量的定义和初始化#include<stdio.h>#include<windows.h>struct S //类型声明{ char name[20]; //名字 int age; //年龄};struct S1{ char n...原创 2018-05-27 18:26:10 · 204 阅读 · 0 评论 -
单链表的逆序打印
(1)递归思想void PrintTailToHead(pList plist)//递归{ if (plist == NULL) return; else PrintTailToHead(plist->next); printf("%d ", plist->data);}(2)逐个遍历void PrintTailToHead1(pList plist){ pLis...原创 2018-06-24 21:03:32 · 428 阅读 · 0 评论 -
注释转化程序
注释转化就是将c注释(/*.....*/)转化成c++注释(//.....)看代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<windows.h>#include<stdlib.h>enum zhuangtai{ KONG, C, CPP, END,};void cpp...原创 2018-06-25 15:15:12 · 213 阅读 · 0 评论 -
单链表实现约瑟夫环
约瑟夫环的问题可以分成四个部分:1、一群人围在一起坐成环状 (建环)2、从某个编号开始报规定的数 (找到相对应的数)3、数到某个数的时候,此人出列 (删除找到的数)4、一直循环,直到剩下最后一个人 (解环)看代码:#inc...原创 2018-08-15 21:39:40 · 361 阅读 · 0 评论 -
栈的应用一之括号匹配问题
括号匹配问题: 给一个类似这样的字符串:char a[]="(())abc{[(])}";检测三种括号的左右括号是否匹配?分析:先取出一个字符,并判断是不是括号(任意括号)? 1. 不是括号,取下一个字符。 2. 是括号。 (1) 是左括号。压栈 (2) 是右括号。和栈顶元素...原创 2018-08-18 10:37:27 · 2874 阅读 · 1 评论 -
栈的应用二之逆波兰表达式
逆波兰表达式 逆波兰表达式又称后缀表达式,它的表示方法通常都是操作数在前,操作符在后。 比如: 通常 逆波兰表达式 1+2 1 2 + 2-3*4/5 ...原创 2018-08-18 19:11:03 · 255 阅读 · 0 评论 -
复杂链表的复制
复杂链表的复制: 一个链表的每个节点,有一个next指针指向下一个节点,还有一个random指针指向这个链表中的每一个随即节点或者NULL,现在要求复制这个链表,返回复制后的链表。 解析:复杂链表的复制可以分成三部分 (1)在原链表的每个节点后插入值相等的新节点 (2)给新节点的随机指针域赋值...原创 2018-08-16 21:44:58 · 155 阅读 · 0 评论 -
二叉树前序,中序,后序的非递归方法(C语言实现)
1.前序的非递归void PreOrderNor(BTNode* pRoot)//前序的非递归{ BTNode*cur = NULL; Stack stack; Initstack(&stack); if (pRoot == NULL)//树空 return; Pushstack(&stack, pRoot); while (stack.sz != 0) ...原创 2018-08-29 15:00:48 · 660 阅读 · 0 评论 -
栈的应用三之迷宫
迷宫想必大家都比较熟悉,想走出一个迷宫,最重要的就是不要在同一个地方走两次,每当遇到一个路口时,将要走的路标记出来,如果没成功下次也就不用再走这边了。 迷宫有很多种,比如:一个通路,多个通路不带环,多个通路带环等,迷宫的解法通常都用回溯法。回溯法:对于一个包括有很多的结点,每个结点有若干个搜索分支的问题,把原问题分解成为若干个子问题求解的算法;当搜索到某个结点发现无法再继续搜...原创 2018-08-25 14:32:29 · 414 阅读 · 0 评论 -
判断完全二叉树
判断一个树是不是完全二叉树,要用到队列的知识。就是在一个二叉树中找到最后一个非叶子节点,当这个结点左孩子存在、右孩子不存在或者左右孩子都不存在的时候,这个二叉树就是一个完全二叉树,否则就不是一个完全二叉树。判断的过程:1.树空,不是完全二叉树。2.树只有根节点,就是一个完全二叉树。3.先将根节点入队列 当一个节点的左右孩子都存在的时候,就让这个节点的左右...原创 2018-09-06 15:15:11 · 1373 阅读 · 0 评论 -
哈希表之链地址发
链地址发 将所有的关键字为同义词的记录储存在同一线性链表中。 比如,我们对于关键字集合{12,67,56,16,25,37, 22,29,15,47,48,34},我们用前面同样的12为除数,进行除留余数法:当哈希表中的元素个数等于哈希表的容量时,哈希表需要增容。sum.htypedef struct linklist{ int data; struct...原创 2018-09-10 09:35:29 · 183 阅读 · 0 评论 -
每日一题:字符串中找出连续最长数字串
输入描述:输入一个字符串。输出描述:输出字符串中最长的数字字符串输入例子:abcd12345ed125ss123058789输出例子:123058789思路:先遍历,再保存int main(){ string s, s1,s2; cin >> s; string max; for (int i = 0; i<s.size...原创 2019-03-07 10:53:22 · 148 阅读 · 0 评论 -
每日一题:求最大连续比特数
功能:求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1输入:一个byte型的数字输出:无返回:对应的二进制数字中1的最大连续数输入描述:输入一个byte数字输出描述:输出转成二进制之后连续1的个数示例1输入3输出2...原创 2019-03-15 17:42:16 · 678 阅读 · 0 评论 -
每日一题:两种排序方法
题目描述考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如: "car" < "carriage" < "cats" < "doggies < "koala" 2.根据字符串的长度排序。例如: "car" < "cats" &原创 2019-03-12 00:13:47 · 231 阅读 · 0 评论 -
通讯录的完成
通讯录是每一个C语言的学习者,在学到数据结构课程后应该实现的程序,用到的知识C语言和数据结构都有涉及,比如:数组,函数,指针,链表,结构体,字符库函数等等。 先看代码:#include<stdio.h>#include<windows.h>#include<stdlib.h>#include<string.h>struct S{ cha...原创 2018-05-25 23:39:18 · 385 阅读 · 0 评论 -
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
首先,求完全平方数的取值范围: 假设两个数之差为一,并且他两个的完全平方数之差为168,这两个数最大只有83; 假设两个数中最小为84,84*84+168<85*85,加168后无法形成完全平方数;#include<stdio.h>int main(){ int i,j = 0; int a = 0; for (i = 0; i &...原创 2018-04-11 00:13:43 · 1953 阅读 · 0 评论 -
最小公倍数和最大公因数
求最大公因数的方法有很多,除了辗转相除法,再给大家说一种:先求出两个数中最小的,用两个数分别除以最小数到2,如果都能除尽,说明这数为最大公因数;用两个数除以最大公因数的两个商*最大公因数即为最小公倍数。#include<stdio.h>int main(){ int a, b = 0; int i = 0; scanf_s("%d %d", &a, &b)...原创 2018-04-11 23:08:34 · 493 阅读 · 0 评论 -
斐波那契数列(递归与非递归)
首先来说下递归,递归的思想是大事化小。斐波那契数列:1,1,2,3,5,8,13,21........设f(n)是第n个斐波那契数,当n<=2,斐波那契数都为1;当n>2,那么第f(n)个斐波那契数就等于前两个斐波那契数之和。递归的代码实现:#include<stdio.h>int fbnq(int n){ if (n <= 2) return 1;//n=...原创 2018-04-21 23:27:03 · 37966 阅读 · 4 评论 -
打印菱形*
菱形是学完循环必须会写的东西;源代码:int main(){ int hang = 0; scanf_s("%d", &hang); int i, j = 0; for (i = 0; i < hang; i++) { for (j = 0; j < hang - i - 1; j++) { printf(" ");//第一...原创 2018-04-12 23:44:07 · 181 阅读 · 0 评论 -
调整数组使奇数全部都位于偶数前面。
题目解析:这道题是一维数组的考察,解这道题需要数组和函数的知识;题目很明显,是将所有的奇数放在数组的前面,并没有顺序要求;如果数组第一个数为偶数并且最后一个数为奇数,那么直接交换,得到奇数在前,偶数在后;第一个不为偶数(为奇数)或者最后一个不为奇数(为偶数),分别往里走找偶数和奇数,直到找到前边偶数后边奇数,然后交换。void Swap(int arr[], int size){...原创 2018-04-13 23:41:17 · 287 阅读 · 0 评论 -
求字符串长度的多种途径
求一个字符串可以用很多种方法,比如:库函数、if循环、while循环、do...while...循环、以及递归等。循环的核心是当遇到‘\0’为止;递归的核心看图:看代码:#include<stdio.h>#include<windows.h>#include<assert.h>int my_strlen1(const char *str)//while循环...原创 2018-04-23 23:06:06 · 494 阅读 · 0 评论 -
指针和数组的深度理解
1.指针数组和数组指针指针数组是数组,是一个存放指针的数组。而数组指针是一个指针,是一个有能力指向数组的。int *arr1[10];int (*arr2)[10]解释:1.arr1先和[]结合,说明它是一个数组,而每一个类型为 int *的指针。(一个数组,类型为int *的指针,为指针数组) 2.arr2先和*结合,说明它是一个指针,然后指向一个大小为10的数组。(一个指针...原创 2018-05-08 22:25:21 · 305 阅读 · 0 评论 -
打印杨辉三角
打印杨辉三角也是二维数组必备技能;源代码:#include<stdio.h>#define N 10int main(){ int i, j = 0; int arr[N][N] = { 0 }; for (i = 0; i < N; i++)//二维数组的初始化。 { for (j = 0; j <= i; j++) { if (i<=...原创 2018-04-20 22:43:01 · 246 阅读 · 0 评论 -
函数的调用过程(函数栈帧)
为了深入学习函数和理解函数每一步实现都干了什么,那我们来深入研究函数的调用过程;先看一段代码:用函数实现两个数的和。#include<stdio.h>int Add(int x, int y){ int z = 0; z = x + y; return z;}int main(){ int a = 1; int b = 2; int c = 0; c = Add...原创 2018-04-21 09:40:10 · 333 阅读 · 1 评论 -
指针和数组的定义与声明
所谓定义,就是让它不存在的时候要让他存在。所谓声明,就是让它不知道的时候被知道。看代码:test.c文件extern char arr[];extern char *p;int main(){ printf("%s\n", arr); printf("%s\n", p); system("pause"); return 0;}main.c文件:char arr[] = "abc...原创 2018-05-18 17:37:26 · 1017 阅读 · 0 评论 -
实现各种库函数。
库函数是干什么的?库函数的实现之所以叫库函数,是因为编译软件已经写好,而在使用的时候只需要调用,引到头文件即可,但是在面试的时候,当用到库函数,比如用strlen来求字符串的长度。如果能写出自己理解的代码,往往是面试官最喜欢的。1.实现strcpy(字符串的拷贝)2.实现strcat(字符串的链接)3.实现strstr(第一个字符串是否为第二个字符串的子字符串)4.实现strchr(字符串s中首次...原创 2018-05-06 17:37:58 · 1529 阅读 · 0 评论 -
使用回调函数,模拟实现qsort(采用冒泡的方式)
回调函数就是一个通过函数指针调用的函数,如果你把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所在指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。使用回调函数,模拟实现qsort(采用冒泡的方式)先了解qsort 的函数原型是void qsort(void*base, size_t...原创 2018-05-13 21:50:27 · 215 阅读 · 0 评论 -
每日一题:跳石板
小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3.......这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M = 24:4->...原创 2019-03-17 22:26:09 · 396 阅读 · 0 评论