C进阶与数据结构
isstack
靡不有初,鲜克有终
展开
-
堆内存分配
C++堆内存分配 C堆内存分配 抽象与分层 如何扩展有效堆内存 brk和sbrk系统调用 如何维护有效堆内存 operator new 抽象与分层 c和c++的内存服务模型与计算机网络里面的协议分层模型有点类似。计算机网络协议大体分为5层:应用层、传输层、网络层、数据链接层和物理层。其中,上层仅仅只需在下层所提供的转载 2017-10-06 23:36:00 · 857 阅读 · 0 评论 -
多进程和多线程的比较
在Linux下编程多用多进程编程少用多线程编程。 IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linu转载 2017-10-10 00:23:25 · 1050 阅读 · 0 评论 -
数组名与指针
数组名和指针的概念很容易搞混淆,比如函数传参的时候,数组名作为形参,但是进去用的时候却和指针用法一摸一样,但是sizeof(数组名)大小却不等于指针的大小(数组size不为1)。并且数组名不能用 自加运算符,说明他应该是一个“常量”。直接通过反汇编来看看数组具体是怎么定义的吧:#include <stdio.h> #include <string.h>int a[3] = {1,2,3};int m原创 2017-11-26 22:39:55 · 216 阅读 · 0 评论 -
链表基本操作
链表就是C中利用结构体,将数据和下一个结构体的地址封装在一个结构体中形成一个节点,这些节点组合起来就是一个基础的链表,根据需要可以扩展其中的内容来实现不同的需求。 实现一个链表需要定义节点,创建,初始化,插入,删除这些基本操作。 #include "stdafx.h" #include "stdlib.h" #include "malloc.h"#define OK 0 #define原创 2017-12-25 18:18:31 · 224 阅读 · 0 评论 -
数据结构-各类树
#include #include #include typedef struct red_black_tree_type *tree; enum color_enum{ color_red, color_black }; struct tree_node{ void*key; enum color_enum color; struct tree_node *par原创 2017-12-30 18:42:08 · 214 阅读 · 0 评论 -
栈和队列(C链表实现)
栈和队列是两种很有用的数据结构,栈是先进后出(FILO),队列是先进先出(FIFO)。 在迷宫求解,括号匹配,递归这些问题里,栈的应用非常广泛,而队列在操作系统的进程排队,线程池里很有用。C中没有现成的栈和队列,这里用链表来模拟一下。设计时分别用到两个结构体,将链表节点部分和控制作用的表头分开,方便管理。 在栈的设计中,使用表头指向栈的top ,每次入栈只需将新节点指向表头,表头再指原创 2017-12-27 14:53:50 · 1183 阅读 · 0 评论 -
位图用法
题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26999题意:给定一个正整数n,求的值,输入数据有10000组,每组一个数n,1<=n<=10^8。分析:定义为1,2,3,...,n的最小公倍数。则可以发现有如下结论:所以有:那么,我们先把所有素数的连乘预处理出来,然后再对每一个素数的整数次幂根据n的不同进...转载 2018-03-19 09:01:13 · 214 阅读 · 0 评论