- 博客(27)
- 收藏
- 关注
原创 双向链表(非循环)
1、头文件(dilst.h)#pragma once//带头结点的双向链表(非循环)typedef struct DNode{ int data;//数据域 struct DNode *next;//后继指针 struct DNode *prio;//前驱指针}DNode,*DList;//初始化双向链表void InitDList(DList plist);//头插
2017-10-30 09:18:05 2306
原创 Linux中关于fork()复制进程
fork()复制进程1、fork()的基本概念一个现有进程可以用fork()函数通过系统调用创建一个新进程,该函数定义如下:#include pid_t fork(void);// 返回:若成功则在子进程中返回0,在父进程中返回子进程PID,若出错则返回-1因此,可以通过返回值知道当前进程是父进程还是子进程。2、fork调用的一个奇妙之处就是它仅仅被调用一次,却
2017-10-29 08:27:50 693
原创 在顺序表A中删除B、C中重复的元素
例题:已知A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在B表中出现又在C表中出现的元素。试对顺序表编写实现上述操作的算法,并分析你的算法的时间复杂度(注意:题中没有特别指明同一表中的元素值各不相同)#include #include #include //不定长顺序表,自动增长#define INITSIZE 10typedef struct DS
2017-10-26 11:51:49 4753
原创 单链表的合并
例题:假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。#include #include #include typedef struct Node{ int data;//保存数据 struct Node
2017-10-26 11:33:23 874
原创 两个顺序表比较大小
例题:设A和均为顺序表,A'和B'分别为和中除去最大共同前缀后的子表。若A'=B'=空表,则A=B;若A'=空表,而B'!=空表,或者两者均不为空表,且A'的首元小于B'的首元,则A否则A>B。试写一个比较A,B大小的算法。#include #include #include //不定长顺序表,自动增长#define INITSIZE 10typedef stru
2017-10-26 11:14:28 4311
原创 将x插入到顺序表中保持顺序表的递增有序
例题:设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。#include #include #include #include "dseqlist.h"//不定长顺序表,自动增长#define INITSIZE 10typedef struct DSeqList{ int *elem;//指向存放数据的动态数组 int le
2017-10-26 11:12:37 8358
原创 顺序表的逆置
例题:试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,……an)逆置为(an,……a1)。#include #include#include#define INITSIZE 10typedef struct DSeqList{ int *elem;//指向存放数据的动态数组 int length;//有效数据个数 int listsize;//总容量
2017-10-25 15:23:20 1021
原创 main函数的三个参数
main函数的三个参数每一个C程序都有一个main()函数。在Linux系统上:#include#include#include#include#includeint main(int argc,char* argv[],char* envp[]) { int i = 0; printf("argc=%d\n",argc); for(;i
2017-10-24 10:51:16 580
原创 Linux中静态库和共享库的区别
Linux中静态库和共享库的区别 在上一篇博客中写到了在Linux中静态库和共享库的做法,那么这篇博文就来给大家简单分享一下静态库和共享库的区别。 1、静态库 (1)如果主机上没有libfoo.a,那么main程序能不能执行? 答:可以执行。因为main程序中已经有add方法(函数)了。(2)如果libfoo.
2017-10-24 10:43:01 833
原创 单向循环链表的基本操作
单向循环链表的基本操作1、头文件(clist.h)#pragma once//循环链表typedef struct CNode{ int data; struct CNode *next;}CNode,*CList;//循环链表初始化void InitList(CList plist);//头插bool Insert_head(CList plist,
2017-10-23 10:27:52 485
原创 回文问题
回文问题1、什么是回文?答:如果是一个字符串的话,从左到右读和从右到左读是完全一样的,例如:”aaabaaa”,”level”等; 如果是一个数字的话,就是:1234321等等类似这样的。 回文字符串:首先来判断一个字符串是否是回文字符串。//判断是否是回文字符串bool IscircleString(char *str,int len){ char *tmp
2017-10-22 10:34:17 495
原创 C/C++中预编译(预处理)、编译、汇编、链接
C/C++中预编译(预处理)、编译、汇编、链接一、预编译读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理作用:处理关于 “#” 的指令(1)删除#define,展开所有宏定义。例#define portnumber 3333(2)处理条件预编译 #if, #ifdef, #if, #elif,#endif(3)处理“#inclu
2017-10-21 18:13:19 533
原创 gcc中预编译(预处理)、编译、汇编、链接
gcc中预编译、编译、汇编、链接 一、预编译操作步骤:gcc -E test.c -o test.i作用:处理关于 “#” 的指令(1)删除#define,展开所有宏定义。例#define portnumber 3333(2)处理条件预编译 #if, #ifdef, #if, #elif,#endif(3)处理“#include”预编译指令,将包含的“.h”文件插入对应
2017-10-21 17:23:09 825
原创 Linux中静态库和共享库的制作方法
Linux中静态库和共享库的做法 1、什么是库:预先编译好的函数(方法)的集合。2、静态库:libxxx.a xxx:代表库的名字3、共享库:libxxx.so4、一些文件所在的位置:程序、命令:/usr/bin /bin头文件:/usr/include库文件:/usr/lib /lib 静态库的做法:1、命令:ar crv libxxx.
2017-10-21 16:35:21 314
原创 Linux中gdb调试的一些简单命令
Linux中JDB调试的一些简单命令调试:需要的工具:gdb 具有调试信息,才能调试,编译时加上 -g参数,是程序具有调试信息。开始调试:gdb main main是要调试的程序,由gccmain.c -g -omain生成。进入后提示符变为(gdb) 。1、(gdb) l:显示代码,如果没有全部显示就继续按回车。 代码会进行行号提示。2、(gdb) b行号...
2017-10-21 16:14:10 483
原创 单链表的基本操作
单链表的基本操作1、头文件(list.h)#pragma once//带头节点的单链表,尾节点的next为NULL//头节点起哨兵位作用,它不使用(数据域不能存储数据)typedef struct Node{ int data;//保存数据 struct Node *next;//保存下一节点的地址}Node,*List;//List == Node*//t
2017-10-19 19:07:52 294
原创 系统运行级别
运行级别 1、runlevel:查看运行级别2、/etc/inittab:运行级别所存储的文件路径3、运行级别:0 halt:关机 1:单用户模式 2:多用户、无网络服务 3:完全的多用户、在字符界面 4:未定义、自定义 5:图形化界面
2017-10-17 10:34:28 342
原创 两数相乘选择进制问题
例题:假设在n进制下,下面的等式成立,567*456=150216,n的值是:A 9 B 10C 12D 18解答:假设n进制,则有以下等式成立:(5*n^2+6*n^1+7*n^0)*(4*n^2+5*n^1+6*n^0)=1*n^5=5*n^4+0*n^3+2*n^2+1*n^1+6*n^0简化以后得到:15*n^4+49*n^3+86*n^2+70*n=n^5
2017-10-14 20:37:42 473
原创 Linux中的命令
1、grep:在一个字符集合中找到符合条件的行输出,也就是可以起到一个过滤的作用。用法:grep“root” password在passwd文件中查找root grep hello file在file文件中查找hello2、find:在系统中查找一个文件用法:find路径 -name 文件名 find /home -name file
2017-10-14 19:44:41 178
原创 Linux中对进程的操作
对进程的一些操作进程:正在运行中的程序进程的状态:就绪、运行、阻塞1、ps:显示当前终端中运行的进程 ps -e:显示所有进程 ps -f:显示进程的详细信息 ps -ef:显示所有进程的详细信息2、kill PID(进程编号):结束一个进程 kill
2017-10-11 19:01:02 248
原创 Linux中文件的权限及文本编辑
一、文件的权限r:读 4w:写 2x:执行 1-:无 0rw- rw- r--chmod:1、文字设定法:chmod
2017-10-11 17:46:12 691
原创 不定长顺序表的基本操作
不定长顺序表1、头文件(dseqlist.h)#pragma once//防止头文件重复引用//不定长顺序表,自动增长#define INITSIZE 10typedef struct DSeqList{ int *elem;//指向存放数据的动态数组 int length;//有效数据个数 int listsize;//总容量,总格子数}DSeqL
2017-10-03 11:01:44 474
原创 定长的顺序表及基本操作
自带解引用的符号:->、[]#pragma once //防止头文件被重复引用//固定长度的顺序表#define SIZE 10 //顺序表的长度typedef struct SeqList{ int elem[SIZE];//存放数据的数组 int length;//有效数据的个数}SeqList,*PSeqList;1、初始化顺序表v
2017-10-01 20:57:22 465
原创 判断矩阵是否为单位矩阵
判断矩阵是否为单位矩阵单位矩阵:除了主对角线上的元素值为1,其余元素全部为0bool identity_matrix(int *arr,int n)//n表示n阶矩阵{ for(int i=0;i < n;i++) { for(int j = 0;j < n;j++) { if(i == j && *(arr+i*n+j) != 1)//用一维数组越界到下一行表
2017-10-01 12:23:20 5302
原创 数组冒泡排序和字符串冒泡排序
数组冒泡排序void BubbleSort(int *arr,int len){ int tmp; for(int i=0;i<len-1;i++) { for(int j=0;j<len-1-i;j++) { if(arr[j] > arr[j+1]) { tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1]
2017-10-01 09:38:56 440
原创 约瑟夫环
例题:有n个人围成一圈,报3的退出,问剩下的一个人的序号是多少?int Circle(int n)//约瑟夫环{ int *arr = (int *)malloc(n*sizeof(int)); int i; for(i=0;i<n;i++) { arr[i] = 1; } int count = n; //存活的人数 int times = 0;//报的数字 i = 0
2017-10-01 09:33:03 201
原创 深拷贝与浅拷贝
深拷贝与浅拷贝浅拷贝:多个指针指向同一段内存(生活中的共享) 字符串常量就是浅拷贝 特点:不能修改#include//浅拷贝int main(){ char buf[100]; char *str[3];//指针数组 int i; for(i = 0;i < 3;i++) { scanf("%
2017-10-01 08:41:04 195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人