自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 孤儿进程和僵尸进程

孤儿进程一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 当一个孤儿进程被一号进程收养的时候,一号进程会代替它的父进程管理它,在它完成自己的声明周期后,一号进程会结束掉孤儿进程,所以没有危害。 孤儿进程实现代码:#include<stdio.h>#inc...

2018-08-07 12:24:13 147

原创 调研进程的调度算法.及task_struct结构体

系统的调度分为三种:1.远程调度(创建新进程); 2.中程调度(交换功能的一部分); 3.短程调度(下次执行的进程)进程调度算法:先来先服务(FCFS) 短作业优先(SPN) 最短剩余时间(SRT) 时间片轮转 最高响应比优先 公平共享调度task_struct在Linux中描述进程的的结构体叫做task_struct。 task_struct是Linu...

2018-08-05 10:54:36 208

原创 元素出栈、入栈顺序的合法性

//元素出栈、入栈顺序的合法性int Judge(Stack *pS1, Stack *pS2, int *arr, int size){ if (pS1 == NULL || pS2 == NULL) { return; } int i = 0; for (i = 0; i < size; i++) { S...

2018-08-05 09:43:06 176

原创 两个队列实现一个栈(C语言)

本题的思路是先创建queue1和queue2,入栈时直接向queue1里入队列,出栈时需要先从queue1中出队列的同时把数依次进入queue2,直到queue1中到最后一个数为止,然后将queue1中的数出队列,再将queue2中的数倒回queue1,这样就实现了一个栈。 实现代码如下://两个队列实现一个栈入栈void StackPush(Queue *p1, QDataType ...

2018-08-01 11:24:42 1674

原创 使用两个栈实现一个队列

本题的思路是两个栈,在这里将栈分为1和2。 在第一次进栈时,将数据直接压入1号栈内,以后进站时,每次都需将1号栈的数据依次出栈并压入2号栈内,然后将要存的数据压入1号栈内,在将2号栈的数据依次出栈并压入1号栈内,这样正常出栈的顺序就是队列的顺序。 实现代码如下://两个栈实现一个队列void Queue(Stack *pS1, Stack *pS2, DataType data)...

2018-07-31 17:31:12 103

原创 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间复杂度为O(1)

本题的重点是要返回最小值的时候时间复杂度为O(1). 我们来用两个栈合成一个栈,一个栈存放要存入的数据,另一个栈存入每次放入时的最小值。 这样就实现了一个栈返回最小值的时候时间复杂度为O(1). 代码如下:#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include<stdio.h>#define DataType...

2018-07-31 17:03:19 421

原创 队列基本操作(链表)

#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include<stdio.h>typedef int QDataType;typedef struct QNode { QDataType data; struct QNode *pNext;} QNode;typedef struct Queue {...

2018-07-31 12:38:12 212

原创 Linux指令

在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限目录的可执行权限表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,是指无法cd进入目录,即使对目录有-r权限。如果对目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有读权限,所以在目录下,即使可以执行ls命令但仍然没有权限读出目录下的文档...

2018-07-27 16:33:34 119

原创 栈的基本操作

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#define DataType int#define Max 20typedef struct Stack { int Top; DataType arr[Max];}Stack;//栈的初始化void StackInit(Stack *pS);/...

2018-06-24 17:55:30 168

原创 Linux权限

Linux下有两种用户:超级用户(管理员,root),普通用户。 超级用户:可以在Linux下做任何事情,不受限时,要谨慎使用。 普通用户:只能在Linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。 切换用户的命令是su,从管理员切换到普通用户命令是“su username”,而从普通用户切换到超级用户只用输入su,root可以省略。文件访问者的分类...

2018-06-09 12:01:17 629

原创 链表的基本操作

#define _CRT_SECURE_NO_WARNINGS 1#pragma once// 值类型 typedef int DataType;typedef struct SListNode { DataType data; // 值 struct ListNode *pNext; // 指向下一个结点 } SListNode;// 初始化 void SL...

2018-05-30 14:48:18 132

原创 顺序表

#pragma once// 值类型 typedef int DataType;#define MAX 4typedef struct SeqList { DataType *data; // 值 int size; // 数量 } SeqList;// 初始化 void SeqListInit(SeqList *pSL);// 尾部插入 void Seq...

2018-05-25 16:21:42 144

原创 时间复杂度和空间复杂度

时间复杂度计算机中,算法的时间复杂度是一个函数,它定性的描述了程序的运行时间,常用大O表示。 在实际中我们通常情况考量的是算法的最坏情况。 递归算法的时间复杂度计算:递归总次数*每次递归中执行基本操作的次数。空间复杂度空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度,所以它强调的是使用的辅助空间的大小,而不是所有空间的大小。 要注意的是递归算法的空间复杂度,假如递归深...

2018-05-24 15:59:59 167

原创 动态内存开辟

malloc、calloc、realloc和free在使用这些函数的时候,需要引头文件 #include< stdlib.h>mallocmalloc的意思就是动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。函数原型:void *malloc(un...

2018-05-21 15:02:53 102

原创 动态通讯录

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<assert.h>#include<string.h>#include<stdlib.h>#ifndef _TONGXUNLU_H__#define _TONGXUNLU_H__#define MAX_NAME 20#...

2018-05-21 14:37:28 164

原创 通讯录的实现

#ifndef _TONGXUNLU_H__#define _TONGXUNLU_H__#define MAX_NAME 20#define MAX_PHONE 11#define MAX_PEO 1000typedef struct PeoInfo{ char name[MAX_NAME]; int age; char phone[MAX_PHONE];}...

2018-05-16 21:46:12 280

原创 结构体、位段、枚举和联合

结构体结构体类型的创建结构体的格式: struct 结构名 {成员表列} 变量名; 结构体创建的时候分为有名结构体和无名结构体 有名结构体:struct stu{ char name[20]; int id; int age;};struct stu PeoInfo;无名结构体:struct{ char name[20]...

2018-05-16 21:43:23 217

原创 模拟实现strncmp

strncmp函数与strcmp函数相似,不过它是比较两个字符串的前n个字符,它比较结束的标志是比较出来前n个字符的不同或者直到’\0’为止,具体实现代码如下:#include<stdio.h>#include<assert.h>int strncmp(const char *str1, const char *str2, size_t num){ a...

2018-05-06 15:35:24 230 1

原创 模拟实现strncat

strncat函数与strcta函数相似,它是将一个字符串的前n个字符连接到上一个字符串后面,覆盖上一个字符串的’\0’,最后连接完之后如果没有’\0’,则补上’\0’,具体实现代码如下:#include<stdio.h>#include<assert.h>char *strncat(char *dst, const char *src, size_t num)...

2018-05-06 15:33:23 119

原创 模拟实现strncpy

strncpy函数和strcpy很相似,就是字符串的拷贝,不过它是将一个字符串的前n个字符拷贝过去,如果拷贝的不包括‘\0’,则后面补上’\0’,具体实现代码如下:#include<stdio.h>#include<assert.h>char *strncpy(char *dst, const char *src, size_t num){ char ...

2018-05-06 15:30:42 212

原创 模仿qsort的功能实现一个通用的冒泡排序

这道题总重要的就是传参,参数一定要传对,第一个传数组的地址,然后数组里元素的个数,元素类型所占的字节数,还有cmp函数,实现代码如下:#include<stdio.h>int int_cmp(const void* p1, const void* p2){ return (*(int *)p1 > *(int *)p2);}void swap(void* ...

2018-05-01 21:07:44 280

原创 深入理解指针

指针数组什么是指针数组?指针数组是数组,是一个存放指针的数组。 eg:`int *arr[10]; 这就是一个指针数组,它是一个存放了10个指针的数组。数组指针什么是数组指针?数组指针是指针,并且这个指针有能力指向一个数组。 eg:int (*p)[10]; 这就是一个数组指针,p先和*结合,它是一个指针,这个指针指向的数组有10个整型元素。函数指针什么是函数指针?函数...

2018-05-01 14:28:59 84

原创 写冒泡排序可以排序多个字符串

#include<stdio.h>#include<string.h>void bubble_sort(char* str[], int sz){ int i = 0; int j = 0; for (i = 0; i < sz; i++) { for (j = 0; j < sz - 1 - i; j++)...

2018-04-30 18:08:18 199

原创 使用main函数的参数,实现一个整数计算器

使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:命令行参数输入:test.exe -a 1 2 执行1+2输出3 ...

2018-04-30 18:07:38 160

原创 实现memmove

#include<stdio.h>void* mymemmove(void* dst, const void* src, size_t count){ void* ret = dst; if (dst <= src || (char*)dst >= ((char*)src + count)) { while (count--) ...

2018-04-26 18:02:14 76

原创 实现memcpy

#include<stdio.h>void* mymemcpy(void* str, const void* dst, size_t count){ void* ret = str; while (count--) { *(char*)str = *(char*)dst; str = (char*)str + 1; ...

2018-04-26 18:01:45 163

原创 实现strcmp

#include<stdio.h>int mystrcmp(const char* str, const char* dst){ int ret = 0; while (!(ret = *(unsigned char*)str - *(unsigned char*)dst) && *dst) { ++str, ...

2018-04-26 18:01:08 77

原创 实现strchr

#include<stdio.h>char* mystrchr(const char* str, char c){ if (*str == NULL) { return NULL; } char* s1 = (char*)str; while (*s1) { if (*s1 == c) ...

2018-04-26 18:00:36 454

原创 实现strstr

#include<stdio.h>char* mystrstr(const char* str, const char* dst){ if ((str == NULL) && (dst == NULL)) { return NULL; } char* s1 = (char*)str; char* s2 = (c...

2018-04-26 17:59:13 89

原创 模拟实现strcat

#include<stdio.h>char* mystrcat(char* str, const char* dst){ char* ret = str; if (str == NULL || dst == NULL) { return NULL; } while (*str != '\0') { st...

2018-04-26 13:11:17 91

原创 模拟实现strcpy

#include<stdio.h>#include<assert.h>char* mystrcpy(const char* str, char* dst){ char* ret = dst; assert(str != NULL, dest != NULL); while (*dst++ = *str++); return ret;}...

2018-04-26 13:10:42 81

原创 .喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水

一瓶汽水一元,有多钱就能喝多少瓶,然后用瓶子换汽水,所以瓶子的总数除以2再加上用钱买的,就是能喝多少瓶汽水。#include<stdio.h>int main(){ int a = 20; int sum1 = 0; int sum2 = 0; sum2 = sum2 + a; while (a) { sum1...

2018-04-26 13:09:53 263

原创 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次

本题的核心思想就是一个数异或相同的两个数时会等于他本身,所以当0异或这个数组的数字时,最终得到的数字就是需要找到的两个数字异或的结果,然后找到它二进制为1的一位,将原来的数组分为两组,再异或就能得到结果。#include<stdio.h>void find(int* arr, int sz){ int i = 0; int a = 0; int b ...

2018-04-26 13:07:25 125

原创 递归方式实现打印一个整数的每一位

#include<stdio.h>void print(int n){ if (n < 10) { printf("%d ", n); } else { print(n / 10); printf("%d ", n % 10); }}int main(){ int n...

2018-04-23 17:26:53 817

原创 递归和非递归分别实现求n的阶乘

非递归:#include<stdio.h>int factorial(int n){ int i = 0; int ret = 1; for (i = 1; i <= n; i++) { ret = ret * i; } return ret;}int main(){ int n = 0;...

2018-04-23 17:26:21 757

原创 递归和非递归分别实现strlen

非递归代码:#include<stdio.h>int mystrlen(char* string){ int count = 0; while (*string != '\0') { count++; string++; } return count;}int main(){ char s...

2018-04-23 17:25:32 370

原创 编写一个函数reverse_string(char * string)(递归实现)

实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中 的字符串操作函数。 代码如下:#include<stdio.h>void reverse_string(char* string){ if (*string == '\0') { return; } reverse_string(string + 1);...

2018-04-23 17:24:30 235

原创 写一个递归函数DigitSum(n)

输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 。 实现代码如下:#include<stdio.h>int DigitSum(int n){ if (n > 9) { return DigitSum(n / 10) + n % 10; } else...

2018-04-23 17:23:43 462

原创 编写一个函数实现n^k,使用递归实现

#include<stdio.h>int pow(int n, int k){ if (k > 0) { return n * pow(n, k - 1); } else { return 1; }}int main(){ int n = 0; int k = 0; scan...

2018-04-23 17:22:52 156

原创 递归和非递归分别实现求第n个斐波那契数

非递归代码如下:#include<stdio.h>int main(){ int a = 1; int b = 1; int c = 1; int n = 0; scanf("%d", &n); while (n - 2) { c = a + b; a = b; ...

2018-04-23 17:22:12 131

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除