- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 冒泡排序
#include "stdafx.h"void Swap(int *x,int *y){ int tmp; tmp = *x; *x = *y; *y = tmp;}void BubbleSort1(int A[], int N){ int i = 0; int j = 0; for (i=N-1; i>0; i--) for (j=0; j<i; j++)
2014-05-30 11:00:59
502
原创 归并排序
#include "stdafx.h"#define ElementType int//Lpos前半部分起始位置,Rpos后半部分起始位置,RightEnd结束位置void Merge(ElementType A[], ElementType TmpArray[], int Lpos, int Rpos, int RightEnd){ int startIndex = Lpos;
2014-05-29 16:41:21
475
原创 堆排序
#include "stdafx.h"#define LeftChild(i) (2*(i)+1) //void Swap(int *x,int *y){ int temp = 0; temp = *x; *x = *y; *y = temp;}void PercDown(int A[], int i, int N) //i是根节点{ int child = 0;
2014-05-29 15:33:59
563
原创 插入排序
基本思想就是将后面的元素插入到前面的已排序序列中。#include "stdafx.h"#define ElementType intvoid InsertionSort(ElementType A[], int N){ int i = 0; int j = 0; ElementType tmp; for (i=1; i<N; i++) { tmp = A[i];//保
2014-05-29 10:38:34
501
原创 用链表实现队列
QueueByList.h#ifndef _QUEUE_Htypedef struct Node * PtrNode;typedef struct QueueByList * PtrQueueByList;PtrQueueByList CreateQueue();bool IsEmpty(PtrQueueByList Q);void EnQueue(PtrQueueByList
2014-05-29 10:00:09
667
原创 用链表实现栈
用一般链表创建的逆向思维就可以。一般链表创建是新建一个节点作为已有节点的后续节点,而这里是新建一个节点作为已有节点的前驱节点。所以最新创建的节点在链表开头,即栈顶位置。
2014-05-28 16:37:23
610
原创 用循环数组实现队列
Queue.h#ifndef _QUEUE_Htypedef struct Queue * PtrQueue;void MakeEmpty(PtrQueue Q);PtrQueue CreateQueue(int maxSize);bool IsEmpty(PtrQueue Q);bool IsFull(PtrQueue Q);void DeleteQueue(PtrQueue
2014-05-28 14:46:58
442
原创 利用数组实现数据结构——栈
Stack.h#ifndef _STACK_Htypedef struct Stack * PtrStack;void MakeEmpty(PtrStack S);PtrStack CreateStack(int size);bool IsFull(PtrStack S);bool IsEmpty(PtrStack S);void DeleteStack(PtrStack S)
2014-05-28 10:08:00
368
原创 用C实现基本链表功能
List.h#ifndef _LIST_Htypedef struct Node* PtrNode;typedef struct Node* List;typedef struct Node* Position;void Insert (int X, List L, Position P);void CreateListByArray (List *L,int A[], int
2014-05-28 10:05:44
336
转载 二分查找key值是否在排序数组中
//二分查找//查找一个排序后的数组Arr中是否含有元素Key//若有,则返回Key在数组中的下标;若无,则返回-1#include "stdafx.h"//这个函数有问题,用主函数现在的设置做测试,发现会死循环//最后High=7,Low=6,Mid=6//而(Key > Arr[MidIndex])永久成立,因为Low==Mid,所以下标不会被修正//事实上,这个Key不存在
2014-05-27 11:46:58
603
转载 实现strcpy函数功能
第一次写这个程序的时候写的很烂,感觉从网上找的这个很好。char *strcpynry(char *strDest, char *strSource){char* strDestCopy = strDest;//这里要先保存一下目的指针,因为下面会改变if (strDest == NULL || strSource == NULL)//验证传进来的指针的合法性throw
2014-05-27 11:25:20
1275
转载 类中const的用法
1.const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)2.const 修饰类的数据成员。如:class A{ const int size; … }
2014-01-20 09:59:55
769
转载 重载和覆盖
有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数。例如我们最常用的System.out.println()能够打印出任何数据类型的数据,它有多种实现方式。运行时,Java虚拟机先判断给定参数的类型,然后决定执行哪个println()方法。 重载(overload):对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系
2013-12-03 09:03:41
443
转载 const的使用
一 const基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b = 500; const int* a = &b; [1] int const *a = &b; [2] in
2013-11-28 11:16:02
396
转载 C++new失败的处理
我们都知道,使用 malloc/calloc 等分配内存的函数时,一定要检查其返回值是否为“空指针”(亦即检查分配内存的操作是否成功),这是良好的编程习惯,也是编写可靠程序所必需的。但是,如果你简单地把这一招应用到 new 上,那可就不一定正确了。我经常看到类似这样的代码: int* p = new int[SIZE]; if ( p == 0 ) // 检
2013-11-28 10:39:55
403
转载 多任务操作系统进程和线程同步控制
http://blog.163.com/tianle_han/blog/static/661782620086125122542/在多任务操作系统环境下,进程和线程的同步控制是多线程和多进程编程的一个重点,稍作总结 一、临界区(criticalsection) 1、临界区是线程同步的一种方式,即它在同一时刻只允许一个线程进入,其他线程只能等往此临界区被释放后
2013-11-01 09:24:55
661
转载 MTVERIFY宏的使用
最近在看侯捷翻译的《Win32多线程程序设计》。我去,这本书可真够老了(1997年),不过总要学多线程啊,不然感觉自己还是门外汉。书是老了些,但是讲的真的很系统也很基础,挺适合我的。刚看了几个程序示例,里面都有一个宏MTVERIFY,貌似是用来记录并解释GetLastError()函数的结果,方便调试出错信息的。本来不想理这个东东,后来发现在书里用的很频繁,就索性深入的看看吧。首先
2013-10-30 09:52:15
582
转载 临界区,互斥量,信号量,事件的区别
最早的一篇原文:http://hi.baidu.com/cnrjm/blog/item/5d217e54ff863550564e00b9.html 四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户
2013-10-29 16:19:24
371
转载 Windows数据类型
Windows API使用了很多Windows自己定义的数据类型。要熟练使用Windows API必须要熟悉Windows数据类型。这些数据类型是Windows特有的。在SDK的相关头文件中有定义。Windows数据类型都是从标准C的数据类型经过类型重定义而来。INT数据类型是有符号整型,DWORD数据类型是无符号整型。2常见类型为什么说是常见数据类型而不是全部呢?因为第一,Win
2013-10-29 11:27:38
389
转载 #define WIN32_LEAN_AND_MEAN 的作用
1:为什么要 #define WIN32_LEAN_AND_MEAN 。答案很简单,因为要包含尽量精简的内容,包含了这一句编译的时候明显快多了。2:不加载MFC所需的模块。如果你的工程不使用MFC,就加上这句,这样一来在编译链接时,包括最后生成的一些供调试用的模块时,速度更快,容量更小。3:我想这个不是 MFC 特有的, WIN32_LEAN_AND_MEAN 是针对 Win32
2013-10-29 11:14:28
2378
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人