- 博客(19)
- 资源 (5)
- 问答 (2)
- 收藏
- 关注
原创 求两个已排序单链表中相同的数据(C语言)
PSListNode ByeNode(DataType data){ PSListNode pNewNode = (PSListNode)malloc(sizeof(struct SListNode)); if (NULL != pNewNode) { pNewNode->data = data; //注意使开辟的新节点的指向为空
2016-04-14 20:07:28 1012
原创 求链表相交时的交点(C语言)
//链表相交时的交点PSListNode IntersectionNode(PSListNode pL1, PSListNode pL2){ int count1 = 0; int count2 = 0; PSListNode PSList1 = pL1; PSListNode PSList2 = pL2; PSListNode pMeetNode1 =
2016-04-14 20:06:16 845
原创 判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】(C语言)
int IsListCroseWithCycle(PSListNode pL1, PSListNode pL2){ PSListNode pMeetNode1 = HasCycle(pL1); PSListNode pMeetNode2 = HasCycle(pL2); if ((NULL == pL1) || (NULL == pL2)) { re
2016-04-14 20:05:15 715
原创 判断两个链表是否相交,若相交,求交点。(假设链表不带环)(C语言)
int IsListCrose(PSListNode pL1, PSListNode pL2){ if ((NULL == pL1) || (NULL == pL2)) { return 0; } else { PSListNode PSList1 = pL1; PSListNode PSList2 = pL2
2016-04-14 20:04:22 564
原创 判断单链表是否带环?若带环,求环的长度?求环的入口点?(C语言)
PSListNode HasCycle(PSListNode pHead){ if ((NULL == pHead) || (NULL == pHead->pNextNode)) { return NULL; } else { PSListNode pFast = pHead->pNextNode->pNextNode;
2016-04-14 20:03:00 626
原创 查找单链表的倒数第k个节点,要求只能遍历一次链表(C语言)
PSListNode FindLastKNode(PSListNode pHead, int K){ if ((NULL == pHead) || (K <= 0)) { return NULL; } else { PSListNode pFast = pHead; PSListNode pSlow = pHe
2016-04-14 20:01:05 1146
原创 查找单链表的中间节点,要求只能遍历一次链表(C语言)
PSListNode FindMidNode(PSListNode pHead){ if (NULL == pHead) { return NULL; } else { //快慢指针,快指针一次循环走两步,慢指针一次循环走一步 PSListNode pSlow = pHead; PSListNo
2016-04-14 20:00:03 1023
原创 合并两个有序链表,合并后依然有序(C语言)
PSListNode MergeList(PSListNode pL1, PSListNode pL2){ PSListNode pNewNode = NULL; PSListNode pListNode1 = pL1; PSListNode pListNode2 = pL2; PSListNode pNode = NULL; if (NULL == pLi
2016-04-14 19:57:39 3168
原创 单链表排序(冒泡排序)(C语言)
优化版:void SortList(PSListNode pHead){ if (NULL == pHead) { return; } else { int flag = 0; PSListNode pTailNode = NULL; //当设置的尾节点与头结点指向同一个节点时,说明只...
2016-04-14 19:53:46 19430 9
原创 逆置/反转单链表(C语言)
1、逆置链表:前插法void ReverseList(PSListNode* pHead){ if (NULL == *pHead) { return; } else { //创建一个新的空链表,遍历pHead指向的链表里的所有节点,每找到一个,就前插到新链表里 PSListNode pNewHead = *pHead; *pHea
2016-04-14 18:51:39 945
原创 单链表实现约瑟夫环(JosephCircle)(C语言)
//使链表形成一个环void FormCyc(PSListNode *pHead){ if (NULL == pHead) { return; } else { PSListNode pNode = *pHead; while (NULL != (pNode->pNextNode)) {
2016-04-14 18:47:51 994
原创 在无头单链表的一个非头节点前插入一个节点(C语言)
①时间复杂度为N:void InsertNotHead(PSListNode pHead, PSListNode pos, DataType data){ PSListNode pPreNode = pHead; PSListNode pPreNode = pHead; if (NULL == pos) { return; } els
2016-04-14 18:45:52 885
原创 删除一个无头单链表的非尾节点(C语言)
void DelNotTailNode(PSListNode pos){ PSListNode pNode = NULL; assert(pos); if (NULL == pos->pNextNode) { return; } else { DataType temp = 0; //交换pos和
2016-04-14 15:40:23 2077 1
原创 从尾到头打印单链表(C语言)
void PrintListTailToHead(PSListNode pHead){ if (NULL != pHead) { //递归实现 PrintListTailToHead(pHead->pNextNode); printf("%d ", pHead->data); }}递归方式很容易就能实现。
2016-04-14 15:20:13 1746
原创 初识C++之多态
多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异,而采用不同的策略。 1、什么是多态 多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。C++中的多态性具体体现在运行和编译
2016-04-13 22:42:20 773
原创 初识C++之虚函数
1、什么是虚函数 在基类中用virtual关键字修饰,并在一个或多个派生类中被重新定义的成员函数,用法格式为: virtual 函数返回类型 函数名(参数表) { 函数体 } 虚函数是实现多态性的关键,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。 看两个例子: ①没有定义基类的Fun函数为虚函数:#define _CRT_
2016-04-13 01:13:00 3703 2
原创 初识C++之封装
学习C++不得不说到C++的三大特性:封装、继承、多态,今天就先来剖析一下他的封装性。 1、什么是封装 封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。下面把一个汽车抽象为一个类来举例: 2、封装的目的 封装的目的是增强安全性和简化编程,它们分别体现在: ①增强安全性:使用
2016-04-12 21:21:09 906
原创 初识C++之函数重载、重写、重定义的区别
在C++的学习中,慢慢接触了一些很容易混淆的名词,今天就来剖析几个容易混淆的名词。 1、函数重载 重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。想要构成重载函数必须要满
2016-04-12 19:56:31 3882
原创 初识C++之继承
1、何为继承 C++中所谓继承,就是在一个已存在类的基础上创建一个新的类,新类获得已存在类的部分特性(为什么是部分特性,后面会讲到)。已存在类被称为基类(Base Class)或父类(Father Class),新建类被称为派生类(Derived Class)或子类(Son Class)。 继承的声明形式: class 派生类名:[继承方式] 基类列表 { 派生类增加的特性; }
2016-04-11 17:30:51 2675
MFC多线程以条件变量或者是消息通知机制来执行子线程问题
2017-10-11
MFC的CEdit属性--UpperCase设置
2017-07-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人