- 博客(124)
- 收藏
- 关注
原创 双向链表的查找
假若我们要在一个带表头的双向循环链表中查找数据域为一特定值的某个结点时,我们同样从表头结点往后依次比较各结点数据域的值,若正是该特定值,则返回指向结点的指针,否则继续往后查,直到表尾。下例就是应用双向循环链表查找算法的一个程序。#include #include #define N 10typedef struct node{char name[20];struct node *llink,*rl
2008-09-03 09:27:00
3801
转载 双向链表和循环链表
一、循环链表循环链表是与单链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的链。循环链表的运算与单链表的运算基本一致。所不同的有以下几点:1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是象单链表那样置为NULL。此种情况还使用于在最后一个结点后插入一个新的结点。 2、在判断是否到表尾时,是判断
2008-09-03 09:26:00
1377
原创 单链表的删除
#include #include #include #define N 10typedef struct node{char name[20];struct node *link;}stud;stud * creat(int n) /*建立新的链表的函数*/{stud *p,*h,*s;int i;if((h=(stud *)malloc(sizeof(stud)))==NULL){printf
2008-09-03 09:25:00
674
转载 单链表的插入
#include #include #include #define N 10typedef struct node{ char name[20]; struct node *link;}stud;stud * creat(int n) /*建立单链表的函数*/{ stud *p,*h,*s; int i; if((h=(stud *)malloc(sizeof(st
2008-09-03 09:23:00
732
原创 单链表的查找
对单链表进行查找的思路为:对单链表的结点依次扫描,检测其数据域是否是我们所要查好的值,若是返回该结点的指针,否则返回NULL。因为在单链表的链域中包含了后继结点的存储地址,所以当我们实现的时候,只要知道该单链表的头指针,即可依次对每个结点的数据域进行检测。 以下是应用查找算法的一个例子:#include #include #include /*包含一些字符串处理函数的头文件*/#define N
2008-09-03 09:18:00
2041
1
转载 动态内存分配
准备:动态内存分配一、为什么用动态内存分配但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数组。比如说我们要存储一个班级学生的某科分数,总是定义一个float型(存在0.5分)数组:float score[30];但是,在使用数组的时候,总有一个问题困扰着我们:数组应该有多大?在很多的情况下,你并不能确定要使用多大的数组,比如上例,你可能并不知道该班级的学
2008-09-03 09:15:00
941
转载 单链表的建立
一、单链表的建立有了动态内存分配的基础,要实现链表就不难了。所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分:1、数据域:用来存储本身数据2、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。例:typedef struct node
2008-09-03 09:09:00
8706
1
转载 如何使用gcc编译器?
摘要:要想读懂本文,你需要对C语言有基本的了解,本文将介绍如何使用gcc编译器。首先,我们介绍如何在命令行方式下使用编译器编译简单的C源代码。然后,我们简要介绍一下编译器究竟作了那些工作,以及如何控制编译过程。我们也简要介绍了调试器的使用方法。 GCC rules 你能想象使用封闭源代码的私有编译器编
2008-08-28 17:39:00
822
转载 Linux下的多线程编程
1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?
2008-08-28 17:07:00
756
转载 C 字符串小研究 strtok VS strtok_r
1. strtok介绍众所周知,strtok可以根据用户所提供的分割符(同时分隔符也可以为复数比如“,。”)将一段字符串分割直到遇到"/0".比如,分隔符=“,” 字符串=“Fred,John,Ann”通过strtok 就可以把3个字符串 “Fred” “John” “Ann”提取出来。上面的C代码为int in=0;char buffer[]="Fred,John,Ann"ch
2008-08-28 10:16:00
2722
转载 Linux C++ 自学
问题:linux下的C++用的是标准的C++库吗?linux下用的是标准C++库附:Suse linux 使用的C++编译器为g++(gcc)IBM_AIX Unix 使用的C++编译器为ccSun Unix 使用的C++编译器为CC C++在linux下的系统调用是C语言编写的API吗?C语言编写的API,好像没用这种说法!~!改成库更了一些,C++是兼容C的,库也不例外 在linu
2008-07-16 14:33:00
1687
转载 INI文件编程,WINAPI函数WritePrivateProfileString,GetPrivateProfileString
在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中. 1.所用的WINAPI函数原型为: BOOL WritePrivateProfileString(LPCTSTR lpAppName,LPCTSTR lpKeyName,
2008-07-10 14:10:00
2480
转载 IP Address Control 控件的使用
CString IP;BYTE f1,f2,f3,f4;TCHAR temp[10] = "/0";this->m_IPAddress.GetAddress(f1,f2,f3,f4);IP = _itoa(f1,temp,10);IP += _T(.);IP += _itoa(f2,temp,10);IP += _T(.);I
2008-07-08 14:59:00
1648
转载 vc中字符串和数字转换的函数:atoi,atol,strtod,strtol,strtoul 类型转换
atoi,atol,strtod,strtol,strtoul实现类型转换atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字
2008-06-26 15:20:00
4689
转载 SocketAPI,CAsyncSocket,CSocket内幕及其用法
Socket有同步阻塞方式和异步非阻塞方式两种使用,事实上同步和异步在我们编程的生涯中可能遇到了很多,而Socket也没什么特别。虽然同步好用,不费劲,但不能满足一些应用场合,其效率也很低。 也许初涉编程的人不能理解“同步(或阻塞)”和“异步(或非阻塞)”,其实简单两句话就能讲清楚,同步和异步往往都是针对一个函数来说的,“同步”就是函数直到其要执行的功能全部完成时才返回,而“异步”则是
2008-06-23 09:49:00
846
转载 利用MFC的Csocket类实现网络通信
近年来,利用Internet进行网际间通讯,在WWW浏 览、FTP、Gopher这些常规服务,以及在网络电话、多媒体会议等这些对实时性要求严格 的应用中成为研究的热点,而且已经是必需的了。Windows环境下进行通讯程序设计的最基本方法是应用Windows Sockets实现进程间的通讯,为此微软提供了大量基于Windows Sockets的通讯API,如WinSockAPI、WinInetAPI
2008-06-16 17:03:00
1638
1
转载 Visual C++程序设计中的文件操作
各种关于文件的操作在程序设计中十分常见,如果能对这些操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而可以在较短的时间内编写出高效的代码。本文对Visual C++中有关文件操作进行了全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行了详细分析。 1. 文件的查找 当对一个文件操作时,如果不知道该文件是否存在,就要首先进行查找。MFC中有一个专门用来进行文件查找的类“
2008-06-13 11:38:00
798
转载 深入分析MFC文档视图结构(项目实践)
文档视图结构(Document/View Architecture)是MFC的精髓,也是Observer模式的具体实现框架之一,Document/View Architecture通过将数据和其表示分开,提供了很好的数据层次和表现层次的解耦。然而,虽然我们使用MFC AppWizard就可以很轻松地获得一个支持Document/View Architecture的MFC程序框架,Document/
2008-06-11 11:37:00
988
转载 深入浅出MFC文档/视图架构之相互关系
1、模板、文档、视图、框架的关系 连载1~5我们各个击破地讲解了文档、文档模板、视图和框架类,连载1已经强调这些类有着亲密的内部联系,总结1~5我们可以概括其联系为: (1)文档保留该文档的视图列表和指向创建该文档的文档模板的指针;文档至少有一个相关联的视图,而视图只能与一个文档相关联。 (2)视图保留指向其文档的指针,并被包含在其父框架窗口中; (3)文档框架窗口(即包含视图的MDI子窗
2008-06-11 11:23:00
2390
转载 深入浅出MFC文档/视图架构之框架
从前文可知,在MFC中,文档是真正的数据载体,视图是文档的显示界面,对应同一个文档,可能存在多个视图界面,我们需要另外一种东东来将这些界面管理起来,这个东东就是框架。 MFC创造框架类的初衷在于:把界面管理工作独立出来!框架窗口为应用程序的用户界面提供结构框架,它是应用程序的主窗口,负责管理其包容的窗口。一个应用程序启动时会创建一个最顶层的框架窗口。 MFC提供二种类型的框架窗口:单文档窗口S
2008-06-11 11:16:00
1740
转载 深入浅出MFC文档/视图架构之视图
视图类CView 在MFC"文档/视图"架构中,CView类是所有视图类的基类,它提供了用户自定义视图类的公共接口。在"文档/视图"架构中,文档负责管理和维护数据;而视图类则负责如下工作: (1) 从文档类中将文档中的数据取出后显示给用户; (2) 接受用户对文档中数据的编辑和修改; (3) 将修改的结果反馈给文档类,由文档类将修改后的内容保存到磁盘文件中。 文档负责了数据真正在永久介质
2008-06-11 11:05:00
1195
转载 深入浅出MFC文档/视图架构之文档
1、文档类CDocument 在"文档/视图"架构的MFC程序中,文档是一个CDocument派生对象,它负责存储应用程序的数据,并把这些信息提供给应用程序的其余部分。CDocument类对文档的建立及归档提供支持并提供了应用程序用于控制其数据的接口,类CDocument的声明如下:///////////////////////////////////////////////////////
2008-06-11 11:00:00
1583
转载 深入浅出MFC文档/视图架构之文档模板
文档模板管理者类CDocManager 在"文档/视图"架构的MFC程序中,提供了文档模板管理者类CDocManager,由它管理应用程序所包含的文档模板。我们先看看这个类的声明: class CPtrList : public CObject{ DECLARE_DYNAMIC(CPtrList) protected: struct CNode { C
2008-06-11 10:43:00
2051
原创 深入浅出MFC文档/视图架构之基本概念
引言 MFC引入了"文档/视图"结构的概念,理解这个结构是编写基于MFC编写复杂Visual C++程序的关键。"文档/视图"中主要涉及到四种类:(1)文档模板:class CDocTemplate; // template for document creationclass CSingleDocTemplate; // SDI supportcla
2008-06-11 10:27:00
1038
转载 多线程编程之四——线程的同步
八、线程的同步 虽然多线程能给我们带来好处,但是也有不少问题需要解决。例如,对于像磁盘驱动器这样独占性系统资源,由于线程可以执行进程的任何代码段,且线程的运行是由系统调度自动完成的,具有一定的不确定性,因此就有可能出现两个线程同时对磁盘驱动器进行操作,从而出现操作错误;又例如,对于银行系统的计算机来说,可能使用一个线程来更新其用户数据库,而用另外一个线程来读取数据库以响应储户的需要,极有可能
2008-06-10 14:45:00
457
转载 多线程编程之三——线程间通讯
七、线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信。这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明。 使用全局变量进行通信由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。
2008-06-10 14:41:00
513
原创 多线程编程之二——MFC中的多线程开发
五、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言
2008-06-10 14:38:00
602
转载 多线程编程之一——问题提出
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000);
2008-06-10 13:55:00
532
转载 主要C++流派
1. 经典C++流:类是核心,例程多用C Runtime的,很少用模版,一般是正统教育的结果。 2. 古典C流:基本上当C用,偶尔用用对象,不使用异常,喜欢怀旧。 3. MFC流:秉承MFC的风格,主要使用MFC/ATL对象和Win32 API,不喜欢STL,用很多的宏把IDE的语法提示模块折磨到崩溃。 4. Portable流:以C Runtime和STL为主要工具,使用类和模版,不跨平台毋宁死
2008-06-10 11:55:00
572
转载 VC++ Combo Box/Combo Box Ex控件
组合窗口是由一个输入框和一个列表框组成。创建一个组合窗口可以使用成员函数: BOOL CListBox::Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff ); 其中dwStyle将指明该窗口的风格,除了子窗口常用的风格WS_CHILD,WS_VISIBLE
2008-06-10 11:43:00
926
转载 VC中ListBox使用
IntroductionThis tutorial will show how to use the CListBox class in a very basic dialog based application. It will cover the following points: Adding a CListBox to your dialog The diff
2008-06-05 09:01:00
8044
转载 VC中radio的用法
先为对话框加上2个radio button,分别是Radio1和Radio2。问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了?关键是选上,“默认”只要放在OnInitDialog()即可。三种方法可以让它选上,第一种:((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);//选上((CButton *)
2008-06-04 17:10:00
1176
转载 巧破软件测试缺陷管理之痛
人世间最痛苦的事莫过于——我所在项目开发正陷于混乱不堪的缺陷之中。因为缺乏一套缺陷管理的有效解决方案,使程序的缺陷无法回溯,无法跟踪,解决没解决不清楚,整一个就是一片模糊。 由于没有得到足够的重视,软件缺陷管理处于失控状态。软件测试人员报告的缺陷常常被遗忘掉;或没有人知道在新的软件版本里究竟纠正了哪些缺陷,还有哪些缺陷未被纠正。更重要的是纠正过程是否引入了新的缺陷也没有人知道,再或者就是缺陷
2008-05-23 11:59:00
559
转载 C++ 标准IO
我们从一开始就一直在利用C++的输入输出在做着各种练习,输入输出是由iostream库提供的,所以讨论此标准库是有必要的,它与C语言的 stdio库不同,它从一开始就是用多重继承与虚拟继承实现的面向对象的层次结构,作为一个c++的标准库组件提供给程序员使用。 iostream为内置类型类型对象提供了输入输出支持,同时也支持文件的输入输出,类的设计者可以通过对iostream库的扩展,来支持
2008-05-22 12:27:00
1727
1
转载 TMM(测试成熟度模型)介绍
许多公司在提高测试效率时往往着重在人力、物力上,最终却发现收获颇微,其主要原因在于测试过程本身不合理。而当前流行的CMMI(Capability Maturity Model Integration,能力成熟度模型集成)等通用模型,没有针对测试领域进行详细阐述,测试过程没有等级化的成熟度考量,缺少改进的指导与动力。 本文作者所设计的TMM(Testing Maturi
2008-05-19 17:40:00
14174
转载 十步完成Web应用程序压力测试
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"DefSemiHidden="true" DefQFormat="false" DefPriority="99"LatentStyleCount="267"><w:LsdException Locked="false" Priorit
2008-05-12 14:14:00
877
转载 shell编程之循环语句
shell编程之循环语句目标: 完成这一章,你将能够作以下事情: 使用while语句在条件为真的时候重复地执行一段代码。 使用until语句重复执行一段代码直到条件为真。 使用交互性的for语句进行循环控制。 1.循环的简单介绍 目标: 重复的执行一段命令列表。 控制; 基于一个关键命令的返回值。 三种格式: while ... do ... done
2008-04-25 16:40:00
1107
转载 如何使用CppUnit进行单元测试
一、前言 测试驱动开发(TDD)是以测试作为开发过程的中心,它坚持,在编写实际代码之前,先写好基于产品代码的测试代码。开发过程的目标就是首先使测试能够通过,然后再优化设计结构。测试驱动开发式是极限编程的重要组成部分。XUnit,一个基于测试驱动开发的测试框架,它为我们在开发过程中使用测试驱动开发提供了一个方便的工具,使我们得以快速的进行单元测试。XUnit的成员有很多,如JUnit,Pyt
2008-04-07 10:07:00
2145
2
转载 软件测试中英文词汇
Acceptance testing : 验收测试Acceptance Testing:可接受性测试Accessibility test : 软体适用性测试actual outcome:实际结果 Ad hoc testing : 随机测试Algorithm analysis : 算法分析algorithm:算法 Alpha testing : α测试ana
2008-03-28 16:14:00
965
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅