- 博客(63)
- 收藏
- 关注
原创 linux进程控制
进程的创建fork函数: 它从已存在的进程中创建一个新进程. 新进程为子进程, 而原进程为父进程.#include <unistd.h>pid_t fork(void);返回值: 子进程中返回0, 父进程返回子进程id, 出错返回-1代码:运行结果:看到了三行输出, 一行before, 两行after. 进程10152先打印before消息, 然...
2019-06-18 23:36:46
150
原创 进程
调度操作系统管理了系统的有限资源, 当有多个进程要使用这些资源时,因为资源的有限性, 必须按照一定的原则选择进程来占用资源. 这就是调度. 目的是控制资源使用者的数量,选取资源使用者许可占用资源或占用资源.调度算法根据系统的资源资源分配策略所规定的资源分配算法. 对于不同的系统和系统目标, 通常采用不同的调度算法.目前存在的多种调度算法中, 有的算法适用于作业调度, 有的算法适用于...
2019-05-30 13:58:41
164
原创 Linux常用工具
部分常用的编辑器Vim: Vim是一个类似于vi的著名的功能强大, 高度可定制的文本编辑器. 在vi的基础上改进和增加了很多特性.Emacs: 著名的集成开发环境和文本编辑器. Emacs被公认为是最受专业程序员喜爱的代码编辑器之一, 另外一个Vim.gedit: gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器, 他使用GTK+编写而成,因此十分的简单易用, 有良好的语...
2019-05-28 12:59:04
135
原创 堆的实现
头文件Heap.h#pragma oncetypedef int HPDataType;typedef int(*PCOM)(HPDataType, HPDataType);int Less(HPDataType left, HPDataType right);int Greater(HPDataType left, HPDataType right);typedef stru...
2019-05-28 12:25:43
106
原创 树以及二叉树
树概念树是一种非线性的数据结构, 它是由n(n>=0)个有限结点组成一个具有层次关系的集合. 把它叫做树是因为它看起来像一棵倒挂的树, 也就是说它是根朝下, 而叶朝上的.树的特点每个结点有零个或多个子节点 没有父节点的结点称为根节点 每个非根节点有且只有一个父节点 除了根节点外, 每个子节点可以分为多个不相交的子树节点的度: 一个节点含有的子树的个数称为该节点的度...
2019-05-25 21:03:25
119
原创 栈和队列
栈栈: 一种特殊的线性表,其只允许在固定的一端插入和删除元素. 进行数据插入和删除操作的一端称为栈顶. 另一端称为栈底. 栈中的数据元素遵守先进后出LIFO原则.压栈: 栈的插入操作叫做进栈/压栈/入栈, 入数据在栈顶出栈: 栈的删除操作叫出栈, 出数据叶子栈顶栈的实现头文件Stack.h#pragma oncetypedef int STDataType;type...
2019-05-21 23:41:01
175
原创 链表之双向链表
头文件DList.h#pragma oncetypedef int DLDataType;typedef struct DListNode { struct DListNode *_pNext; struct DListNode *_pPre; DLDataType _data;}DLNode, *PDLNode;void DListInit(PDLNode *pHead...
2019-05-21 16:27:42
108
原创 Linux基础指令
权限文件访问者的分类文件和文件目录的所有者: u-User 文件和文件目录所有者所在组的用户: g-Group 其他用户: o-Other文件类型和访问权限文件类型d: 文件夹-: 普通文件b: 块设备文件p: 管道文件c: 字符设备文件s: 套接口文件基本权限r 读: Read对文件而言,具有读取文件内容的权限; 对目录来说, 具...
2019-05-18 20:45:26
107
原创 文件操作
打开文件FILE *fopen(const char * restrict filename, const char * restrict mode);fopen函数的第一个参数是含有要打开文件名的字符串.("文件名"可能包含关于文件位置的信息,如驱动器和路径) 第二个参数是"模式字符串",它用来指定打算对文件执行的操作.例如,字符串"r"表明将从文件读入数据,但是不会向文件写入数据...
2019-05-02 01:06:28
107
原创 链表之单链表
什么是链表?链表的分类?链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.分类:单向, 双向 不带头单链表, 带头单链表 单链表, 循环单链表带头结点和不带头结点的区别带头结点: head->p1->p2->p3不带头结点: p1->p2->p3带头结点单链表实现SList.h...
2019-05-02 00:15:44
115
原创 <luogu>P1909 买铅笔
P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起 见,P老师决定只买同一种包装的铅笔。商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱学习了下大佬的思路,如下:...
2019-04-27 22:45:51
297
原创 线性结构之顺序表
什么是线性结构?线性结构是一个有序元素的集结常见的线性结构: 线性表,栈,队列,双队列,数组,串常见的非线性结构: 二维数组,多维数组, 广义表,树什么是顺序表?顺序表的分类?顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储可以分为1. 静态顺序表: 使用定长数组存储2. 动态顺序表: 使用动态开辟的数组存储动态顺序表...
2019-04-24 23:30:33
167
原创 时间复杂度和空间复杂度
如何衡量一个算法的好坏?两个参考点:1.时间复杂度 2.空间复杂度什么是时间复杂度?定义; 在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间.一个算法所花费的时间和其中语句的执行次数成正比.算法中的基本操作的执行次数,为算法的时间复杂度.递归的总次数*每次递归的数量时间复杂度为什么不使用时间来衡量而使用基本语句的运行次数来衡量?算法的执行时间依赖于...
2019-04-22 18:52:30
128
原创 P1089 津津的储蓄计划
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main() { int spend, get = 0, deposit = 0; for (int i = 1; i <= 12; ++i) { scanf("%d", &spend); ge...
2019-04-18 23:41:34
603
原创 实现一个简易的通讯录
通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址.#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct PersonInfo { char name[102...
2019-04-16 15:06:14
269
原创 自定义类型:结构体,枚举,联合
结构体结构变量结构的成员可能具有不同的类型.而且,每个结构成员都有名字,所以为了选择特定的结构成员需要指明结构成员的名字而不是他的位置.结构变量的初始化和数组一样,结构变量也可以在声明的同时进行初始化.为了对结构进行初始化,要把待储存到结构中的值的列表准备好并用花括号括起来.初始化式中的值必须按照结构成员的顺序进行显示,结构初始化式遵循的原则类似于数组初始化式的原则.用于结...
2019-04-14 23:53:57
133
原创 模拟实现memmove
#include <stdio.h>#include <stdlib.h>#include <assert.h>void* mymemmove(void* dest, const void* src, size_t n){ char * d = (char*)dest; const char * s = (const char*)src; i...
2019-04-14 21:53:11
105
原创 模拟实现memcpy
#include <stdio.h>#include <stdlib.h>void *mymemcpy(void *str, const void *dst, size_t count) { void *ret = str; while (--count) { *(char*)str = *(char*)dst; str = (char*)str + 1...
2019-04-14 20:54:50
221
原创 模拟实现strcmp
#include <stdio.h>#include <stdlib.h>#include <assert.h>int mystrcmp(const char *src, const char *dst) { int ret = 0; assert(src != NULL); assert(dst != NULL); while (!(ret ...
2019-04-13 23:45:38
130
原创 模拟实现strchr
#include <stdio.h>#include <stdlib.h>char *mystrchr(char *s, char c) { while (*s != '\0' && *s != c) { ++s; } return *s == c ? s : NULL;}int main() { char str[] = "hel...
2019-04-13 23:23:28
98
原创 模拟实现strstr
#include <stdio.h>#include <stdlib.h>char *mystrstr(char *str1, char *str2) { int n; if (*str2) { while (*str1) { for (n = 0; *(str1 + n) == *(str2 + n); ++n) { if (!*(str2 ...
2019-04-13 23:04:04
107
原创 模拟实现strcat
#include <stdio.h>#include <stdlib.h>char *Strcat(char *dest, const char *src) { int i = 0; for (; dest[i] != '\0'; ++i); for (int j = 0; src[j] != '\0'; ++i, ++j) { dest[i] = src...
2019-04-11 13:33:14
87
原创 模拟实现strcpy
#include <stdio.h>#include <stdlib.h>char *Strcpy(char *dest, const char *str) { char *ret = dest; while (*dest++ = *str++) { ; } return ret;}int main() { char arr1[64] = { 0...
2019-04-11 13:21:00
91
原创 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以喝多少汽水。
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main() { int i; int empty; int num = 0; printf("请输入钱数:"); scanf("%d", &i); empty = i; while (empty ...
2019-04-11 12:55:30
123
原创 一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次,找出这两个数字
#include <stdio.h>#include <stdlib.h>void find_num(int arr[], int len) { int i = 0; int ret = 0; int pos = 0; int x = 0; int y = 0; for (i = 0; i < len; ++i) { ret ^= arr[i]...
2019-04-11 00:23:00
113
原创 判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1 =AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void leftMove(char *left, char ...
2019-04-08 13:12:13
178
原创 实现一个函数,可以左旋字符串中的k个字符。
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void move(char *arr, int count) { int i = 0; char tmp = arr[0]; for (i; i < count - 1; ++i) { arr[i] = arr...
2019-04-07 23:05:44
103
原创 杨氏矩阵
#include <stdio.h>#include <stdlib.h>int find_data(int arr[][5], int line, int value) { if ((value < arr[0][0]) || (value > arr[line - 1][4])) { return 0; } int lin = 0; in...
2019-04-07 22:07:53
210
原创 调整数组使奇数全部都位于偶数前面
#include <stdio.h>#include <stdlib.h>void Sequence(int arr[], int len) { int i, j; for (i = 0; i < len; ++i) { if (arr[i] % 2 == 0) { for (j = i + 1; j < len; ++j) { i...
2019-04-07 20:39:55
105
原创 有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student".
#include <stdio.h>#include <stdlib.h>void reverse(char *left, char *right) { while (left < right) { char tmp = *left; *left = *right; *right = tmp; left++; right--; }}...
2019-04-07 19:50:25
128
原创 一组数据中只有一个数字出现了一次。其他所有数字都是成对出现的。 请找出这个数字。
#include <stdio.h>#include <stdlib.h>int main() { int arr[] = { 1,2,3,5,4,4,3,2,1 }; int len = sizeof(arr) / sizeof(arr[0]); for (int i = 1; i < len; ++i) { arr[0] = arr[0] ^ a...
2019-04-06 23:21:45
128
原创 不使用(a+b)/2这种方式,求两个数的平均值。
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main() { int a; int b; printf("请输入a b的值: "); scanf("%d%d", &a, &b); printf("%d\n", (a - ((a - b) ...
2019-04-06 22:51:01
92
原创 编写函数: unsigned int reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值。
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>unsigned int reverse_bit(unsigned int value) { int i = 0; int bit = 0; unsigned int result = 0; for (i; i <...
2019-04-06 22:32:41
127
原创 杨辉三角
#include <stdio.h>#include <stdlib.h>#define N 8int main() { int arr[N][N] = { 0 }; int i = 0; for (i; i <= N; ++i) { int k = 0; for (k; k <= N - i; ++k) { printf(" "...
2019-04-04 23:37:02
89
原创 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个 嫌疑犯的一个。
A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手。#include <stdio.h>#include <stdlib.h>int main() { int criminal; for (criminal = 'A'; criminal <= 'D'; ...
2019-04-04 23:34:50
131
原创 5位运动员参加了10米台跳水比赛,预测比赛结果
A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#include <stdio.h>#include <stdlib.h>int Repeat(int arr[]) { int i = 0; int j = 0;...
2019-04-04 23:33:29
134
原创 简易扫雷游戏的实现
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int Menu() { //打印菜单 printf("======================================\n"); printf("============ 1. 开...
2019-04-02 22:54:59
147
原创 三子棋小游戏的实现
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>void print(int chess[][3]) //打印棋盘{ int i = 0; int j = 0; syste...
2019-03-31 21:57:22
130
原创 递归方式实现打印一个整数的每一位
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void Print(int n) { if (n > 9) { Print(n / 10); } printf("%d ", n % 10);}int main() { int n; printf("...
2019-03-29 14:38:51
131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人