自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 生产者与消费者模型

//生产者每提交一条消息到缓冲区中,就会通知消费者,等消费者取走消息之后才能提交下一条消息。同样,消费者也必须等待生产者提交一条消息后才能进行处理。这种设//计的效率是比较低下的。#include #include #include #include #include #include "SqQueue.h"//信号量和缓冲区struct data{ sem_t empty;

2017-08-17 20:08:28 230

原创 条件变量

假设有这样一种情况:线程正在等待共享数据内某个条件出现,这时必须先解锁,否则其他线程不可能更改共享数据。一种实现方式是,可以循环检测共享数据,但是在检测前要加锁,检测后又要解锁,这样效率会很低。 因此,在这种情况下,需要一种方法,使得当线程在等待某些条件的满足时进入睡眠状态,一旦条件满足,线程就应该被唤醒继续执行。这个方法就是使用POSIX条件变量。#include #inc

2017-08-17 20:06:20 192

转载 网络编程

1.创建socket2.命名套接字,绑定本地的ip地址和端口3.监听本地套接字4.接收连接#include #include #include #include #include #include #define PORT 9999int main(){ //1.创建socket int listen_socket = socket(AF_INET, SOCKET

2017-08-17 20:04:17 183

原创 请编写一个c函数,该函数给出一个字节中被置为1的位的个数

#include int func(int x){ int sum = 0; int i,y; for(i = 0; i<8; i++) { y = x%2; x = x>>1; if(y&1 == 1) { sum++; } } return sum;}int main(){ int x; printf("please input x :")

2017-08-17 19:59:49 477

原创 输入5个数(含负数、小数)将它们按由小到大的顺序排列起来

//这是一道以前我做过的题目,题目其实很简单,但是要用到排序的方法,这里直接用一个简单易懂的冒泡排序#include #define count 5int main(){ int i,j; float a[count]; printf("请输入五个数(可以是小数或负数):"); for(i=0;i<count;i++) { scanf("%f",&a[i]); } for

2017-08-11 20:59:17 1155

原创 获取进程ID

#include #include #include //这是一个最基础的关于获取进程ID的函数,里面用到的getpid函数大家可以去网上百度一下int main(){ printf("获取进程的 id: %d\n",getpid()); printf("获取父进程的id: %d\n",getppid()); printf("获取用户的 id: %d\n",getuid());}

2017-08-09 20:35:51 597

原创 利用文件知识写一个通讯录

//注意文件在主函数中插入的位置#include #include#include "friendadress.h"int main(){ Node *head = Create_List(); Friend data; if (head == NULL) { printf("创建链表失败\n"); return -1; } menu(); wh

2017-08-08 14:17:05 214

转载 系统调用

所有的操作系统都提供多种服务的入口点,程序由此向内核请求服务。这些可直接进入内核的入口点被称为系统调用。 ... 进程控制 文件系统控制 内存管理 网络管理 用户管理 进程间通信  为什么用户程序不能直接访问内核提供的服务?    在Linux中,为了更好地保护内核空间,程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们

2017-08-07 09:06:54 204

原创 len函数

int Get_Len(Node * h){ if (h == NULL)  return 0;  Node *tmp = h; int count = 0; while (tmp->next) {  count++;  tmp = tmp->next; }  return count;}

2017-08-07 08:59:49 4338 1

原创 停车场2.0

/*上次写的那个停车场项目,停车还有查看功能没有问题,但是在离开的时候还是有问题,今天晚上我又给完善了一下,下面就是我完善的部分,就是在离开的时候需要定义一个flag用来判断停车场是否有要离开的那辆车,其他的逻辑上很好想,大家看一下应该就明白了*/if(QueueEmpty(w)==TRUE)     {      int x;   float t;   int fla

2017-08-06 23:15:01 225

原创 随机分组

#include #include void swap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}void printA(int *a, int len){ int i;  for (i = 0; i  {  if (i % 4 == 0) 

2017-08-06 20:51:15 797

转载 文件复制

int main(){ int fd1 = open("1.pptx",O_RDONLY); if(fd1 == -1) {  perror("open fd1");  return -1; } int fd2 = open("2.pptx",O_WRONLY|O_CREAT,0777); if(fd2 == -1) {  perror("ope

2017-08-06 18:44:57 155

原创 插入排序

#include//交换函数void swap(int *a,int i,int j){ int tmp=a[i]; a[i]=a[j]; a[j]=tmp;}void printA(int *a,int len){ int i; for(i=0;i {  printf("%4d",a[i]); } printf("\n");

2017-08-06 09:00:16 146

转载 非递归后序遍历

void last2_order (BTreeNode *node){ if (node == NULL) {  errno = ERROR;  return; } LinkStack *Stack = Create_Stack (); BTreeNode *tmp = node;   //指向当前节点 BTreeNode *pre = NULL;  /

2017-08-05 14:35:19 254

转载 非递归中序遍历

void mid2_order (BTreeNode *node){ if (node == NULL) {  errno = ERROR;  return; } LinkStack *Stack = Create_Stack (); BTreeNode *tmp = node;   //指向当前节点 while (tmp) {  Push (S

2017-08-05 14:33:36 289

原创 二叉树的前序遍历

/*二叉树的前序遍历思想很简单,先建立一个栈方便我们在遍历二叉树的时候存储数据,然后开始前序遍历,找到根节点,输出,然后入栈,再找根节点的左孩子结点,继续输出,入栈,直到左孩子结点为空,左孩子结点都已经找完,然后出栈,接着找右孩子节点,进入刚才说的那个循环。*/void  pre(BTreeNode *root){    if(root==NULL)    

2017-08-05 14:31:27 224

原创 归并排序

//a是数组,tmp是缓冲区void merge(int *a,int left,int mid,int right,int *tmp){ int i=left; int j=mid+1; int k=0;  while(i {  if(a[i]>a[j])   tmp[k++]=a[j++];  else(a[i]   tmp[k++]=a

2017-08-03 20:43:09 177

原创 排序算法

//这是一个关于快速排序的小程序,快速排序是找一个基准值和数组中其他的元素进行比较,小于他的放到基准值的左边,大于他的放到她的右边。所以程序的关键在于找一个基准值,也就是你找的一个用来和其他元素进行比较的值,我在这里找的是数组最后一个元素,当然找什么元素作为基准值看你个人喜好。找到基准值以后就需要把数组中的元素和他进行比较了,我建立一个partition()函数来进行进行分区操作,找基准值

2017-08-03 20:09:17 177

原创 头结点链表练习

//这是一份关于头结点链表的问题//完成一些基本的链表处理函数,包括插入,查找,删除,输出等一些功能的实现#include#include#include"linklist.h"Node *Creat_List(){ Node  *list=(Node *)malloc(sizeof(Node)/sizeof(char)); if(list==N

2017-08-02 20:01:24 250

原创 停车场停车

//这是一个简单的停车场作业,#include"Parking.h"#includevoid menu(){ system("clear"); printf("***********************************************************************\n"); printf("*

2017-08-02 19:56:53 258

原创 指针

指针存储的是地址,地址有常量变量,函数等指针,存储的都是他们的地址。我觉得吧,在见到或者是用到这些指针变量的时候,直接记住这些指针都是地址,我们都是通过地址来改变的他们的值,这样改变过后无论在这个程序的哪里用到这些数据,都是用到这些被改变过后的数据。      另外,对于函数指针来说呢,其实就是把他们的函数名当作地址,这个函数的入口地址,不过我对于具体的使用上的细节还有些不太明白的地方,就不往

2017-07-21 19:05:53 142

转载 今天是第一次写博客,先写个小程序庆祝一下

这是一个简单的求输入的一个数有多少个9的小程序,也是照着百度上的写的。。。 #include int fun(int);int main(){int n,c;printf("请输入一个数: ");scanf("%d",&n);c = fun(n);printf("共有%d个9\n",c);    return 0;}int fun(int n)

2017-07-11 22:16:53 186

空空如也

空空如也

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

TA关注的人

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