- 博客(31)
- 收藏
- 关注
原创 浅谈堆排序的C代码实现与分析
首先我要说明一点,在看了很多网上的资料的前提下,我一开始以为堆就是完全二叉树。其实这个概念是错的。其次,堆排序也不是只能针对完全二叉树,只是完全二叉树更为方便实现。堆排序原理与图解可以详见https://www.cnblogs.com/chengxiao/p/6129630.html这篇博客介绍的非常好,在这里我就不多说了。以下是本人的代码与注释#include <st...
2019-02-07 23:33:09
183
原创 网络编程
对于网络理论介绍一般采用OSI模型,但是Linux中网络栈的介绍一般分为四层的Internet模型。应用层TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,基于UDP实现。提供不复杂、开销不大的文件传输服务。FTP 是File Transfer Protocol(...
2018-08-22 20:13:20
176
原创 线程通信
线程概念线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址空间)。线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线...
2018-08-20 21:28:47
184
原创 LINUX下的进程通信
进程间通信概述:1.数据传输: 一个进程需要将它的数据发送给另一个进程。2.资源共享: 多个进程之间共享同样的资源 。3.通知事件 : 一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。4.进程控制 :有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变。...
2018-08-19 11:51:51
181
原创 LINUX进程控制编程
1.进程的定义:进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元。 2.进程的生命周期:创建: 每个进程都是由其父进程创建,进程可以创建子进程,子进程又可以创建子进程的子进程 。运行: 多个进程可以同时存在,进程间可以通信 。撤销: 进程可以被撤销,从而结束一个进程的运行。 3.进程的三种状态:执行状态:进程正在占用CPU...
2018-08-16 14:53:09
346
原创 数据结构之树(二叉树)
树的概念:结点:树的结点包含一个数据元素及若干个指向其子树的分支。度:结点拥有的子树称为结点的度。叶结点:度为0的结点称为叶结点或者终端结点。分支结点:度不为0的结点称为非终端结点或者分支结点。孩子、双亲:结点的子树的跟称为该结点的孩子,相应的,该结点称为孩子的双亲。深度:树中结点最大层次称为树的深度。 二叉树的特点 :每个结点最多有两棵子树,所以二叉树中不存在...
2018-08-10 21:44:57
193
原创 栈的链式存储结构
链栈的特点:1.不需要头结点2.不存在栈满的情况3.栈的功能函数int StackInit(Stack **s)//初始化栈{ if (NULL == s) { return FAILURE; } (*s) = (Stack *)malloc(sizeof(Stack) * 1); if (NULL == (*s)) { return FAILURE;...
2018-08-08 21:08:55
187
原创 单链表的头插法和尾插法
#include "linklist4.h"#include <stdlib.h>int Linklist_into(Link **head){ *head = (Link *) malloc (sizeof(Link)); if(*head == NULL) { return FALSE; } (*head)->next = NULL; retur...
2018-08-07 19:57:55
280
原创 数据结构之一:栈
int StackInit(Stack **s)//初始化{ (*s) = (Stack *)malloc(sizeof(Stack) * 1); //分配一个结构体,用于保存栈的信息 if(NULL == (*s)) { return FAILURE; } (*s)->top = -1; //空栈,栈顶为-1 (*s)->data = (E...
2018-08-06 22:43:54
148
原创 通讯录(链表版)
void transfer(STU *head)//修改链表元素{ system("clear"); STU *p,*q; int i,flag; p = (STU *) malloc (sizeof(STU)); while(1) { flag = 0; if(num == 0) { printf("通讯录内容为空(等待自动跳回主菜单)!\n"); sle...
2018-08-05 19:59:45
443
原创 通讯录链表2.0实现(删除功能BUG已解决,插入功能仍有BUG)
#include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 1000#define RED "\033[0;32;31m"#define NONE "\033[m" int num;struct student{ char name[20]; int age;...
2018-08-03 20:54:10
307
原创 顺序表的插入、删除、清空、销毁、定位、查找
#include "sequencelist.h"#include <stdlib.h>#include <stdio.h>int Sequence_list(Selist *p){ if(p == NULL) { return FALSE; } else { p->length = 0; p->list = (TYPE *) m...
2018-08-02 20:47:04
2587
原创 链表通讯录的部分功能实现(删除功能仍有BUG)
#include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 1000#define RED "\033[0;32;31m"#define NONE "\033[m" int num;struct student{ char name[20]; int age...
2018-08-01 22:01:55
210
原创 字节序(大小端问题)
判断大小端 #include <stdio.h>union test//共用一段内存空间,只为最长成员分配空间{ short val; char array[2];};int main(){ union test t; t.val = 0x0102; if (t.array[0] == 1 && t.array[1] == 2)//大端...
2018-07-30 19:47:44
275
原创 通讯录
#include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 1000int num = 0; struct person{ char name[20]; int age; char ID;};typedef struct person STR;void ...
2018-07-30 00:20:44
197
原创 数组指针和指针数组
数组指针 #include <stdio.h>int main(){ int i, j; int a[3][4] = {1, 2, 3, 4 ,5, 6, 7, 8, 9, 10, 11, 12}; int (*p)[4] = a;//定义一个数组指针,这个指针指向一个数组,数组里有4个整型元素。因为指针的步长位4 * 4 = 16 Byte,a指向数组首行的地址,步...
2018-07-28 19:01:59
133
原创 函数指针和指针函数
1.函数指针是一个指针,它指向一个函数。#include <stdio.h>void print(){ printf("helloworld\n");}int add(int x, int y){ return (x + y);}int main(){ void (*p)(); //声明函数指针,它指向的函数没有参数,是空类型函数 p = prin...
2018-07-27 22:43:00
133
原创 把一个整数由高位到低位依次输出
1. 假设不知道输入的数的位数#include <stdio.h>int main(){ int x,i,num = 0,a[100]={0}; printf("请输入一个数:\n"); scanf("%d",&x); printf("由高位到低位依次输出:\n"); while(x)//由低位到高位依次顺序存入数组 { a[num]...
2018-07-26 19:23:54
10961
3
原创 指针数组
指针数组存放的是地址,通过对地址的引用操作存放地址指向的内存空间。指针数组 的定义、赋值(地址)、运算:#include <stdio.h>#include <stdlib.h>int main(){ int i,n; char *str[100] ={0};//定义 scanf("%d",&n); for(i = 0;i < n;...
2018-07-25 23:25:20
688
原创 数组访问指针与指针访问数组
1.数组访问指针:#include <stdio.h>#include <string.h>int main(){ int length,i; char *p = "hello world!"; length = strlen(p); for(i = 0;i < length;i++) { printf("%c",p[i]); } pr...
2018-07-25 22:57:31
869
原创 预处理(头文件和宏函数)
头文件:#include <......> : 在系统的指定目录下寻找头文件,#include ' ......'在当前 的目录和系统指定的目录(自定义的头文件) 宏函数:有参的宏函数#define P(s) printf("%s",s) 无参的宏函数#define OUT printf("abcd") 自定义函数和宏函数的区别:缺点: 浪费时间(编译),没有语法检...
2018-07-25 22:29:39
315
原创 穷举法应用银行不同月息利率存款方案
#include <stdio.h>#include <math.h>int main(){ double sum,max = 0; int i,j,p,q,k,a,b,c,d,e;/*a,b,c,d,e,f分别对应不同期限的存款次数*/ for(i = 0;i <= 2;i++)/*穷举所有存款方式*/ for(j = 0;j <=...
2018-07-24 21:15:51
382
原创 计算从某年某月某日到指定年月日的日数(三天打鱼两天晒网)
//计算从某年到某年的日数int day(int x){ int sday = 0; if((x % 400) ==0 || (x % 4) == 0 && (x % 100) != 0) sday += 366; else sday += 365; return sday;}/*********************///计算从1月1号到...
2018-07-24 20:51:09
1810
原创 变量的存储类型和函数的的调用过程
变量的存储类型:extern int num//声明一个外部变量,不占用内存空间(定义占用内存空间),外部变量能被其他文件调用,放在要调用全局变量num的文件中。 static int num//修饰全局变量时,改变变量的作用域,只能在当前文件被调用不能被其他文件调用。 static void print//修饰函数时,改变函数的作用域,只能在当前文件被调用。函数的调用过程:通过函数...
2018-07-23 23:19:58
272
原创 冒泡排序
冒泡排序 #include <stdio.h>void get(int length,int a[]){ int i; for(i=0;i<length;i++) scanf("%d",&a[i]);}void mp(int length,int a[]){ int i,j,k; for(i=length-1;i>0;i--) fo...
2018-07-23 23:06:11
123
原创 0721学习日志
学习内容:数据类型(不同的数据类型在32位LINUX中所占的字节数);混合计算;const;运算符的优先级;逗号表达式;if else嵌套;switch语句;for循环学习难点:(char)字符型数据和(int)整型数据转换只能char向int转换,规则是小范围数据类型转大范围数据类型。i++与++i的区别...
2018-07-21 20:52:19
137
原创 0720学习日志
学习内容:gdb调试,shell命令,环境变量难点:gdb的断点调试,shell编写中if case for语句的使用,命令行参数的调用
2018-07-20 23:10:14
131
原创 0719学习日志
学习内容:编译器vim的三种模式,编译器gcc的编译过程和命令make和文件makefile学习难点:Makefile的编写和隐含规则自学内容:一些C的编程和sorn排序命令...
2018-07-19 19:34:27
126
原创 7.18学习日志
学习内容:文件管理命令和系统管理命令和做了一部分C编程练习题。学习难点:quota命令没有成功实现显示磁盘使用与限制情况,不是非常理解组名和磁盘限制显示这些概念。...
2018-07-18 21:26:32
130
原创 7.17号学习日志
今天学习了根目录下存放的各目录的功能和LINUX的常用命令,第一天上课的感觉老师语速非常快,很多东西只有时间粗略记下,很多命令还要反复用几遍才记得住。总体上感觉还可以,虽然第一天浪费些时间,感觉还是挺充实的。学习收获:根目录,cd,ls,mkdir,rm,mv,-r递归,-f强制,su,*,..,.,touch,tar -zcf,tar -xzf, find, kill -9,grep,us...
2018-07-17 19:36:21
120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人