09 2012 档案

摘要:今天讨论下数据结构中的排序算法。排序算法的相关知识:(1)排序的概念:所谓排序就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。(2)稳定的排序方法:在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的。相反,如果发生改变,这种排序方法不稳定。(3)排序算法的分类(分为5类):插入排序、选择排序、交换排序、归并排序和分配排序。(4)排序算法两个基本操作:比较关键字的大小。 改变指向记录的指针或移动记录本身。具体的排序方法:插入排序插入排序(Insertion Sort)的思想:每次将一个待排序的记录按其关键字. 阅读全文
posted @ 2012-09-16 21:19 liuyi_001 阅读(1204) 评论(0) 推荐(0) 编辑
摘要:接着上节讲数据结构中的树,要理解树,最重要的是要理解:二叉排序树、平衡二叉树和红黑树。今天就来讨论这几种树。二叉排序树 概念:二叉排序树又叫二叉查找树、二叉搜索树、二叉检索树。二叉排序树是二叉树的一个特化,二叉排序树规定了每个结点的关键字均大于其左子树上所有的结点的关键字,同时小于或等于其右子树上所有结点的关键字。所以,从二叉排序树的根结点一直往左走,直到底,就可以得到最小值;从根结点一起往右走,直到底,就可以得到最大值。二叉排序树的这种特殊性质使得它在查找元素方面的时候特别方便,每一次查找都可以去掉一半的元素,因此查找的时间是O(logN)。 二叉排序树的算法:(1)二叉排序树的查找算法t. 阅读全文
posted @ 2012-09-16 21:18 liuyi_001 阅读(425) 评论(0) 推荐(0) 编辑
摘要:树是数据结构中很重要的一环,更是C/C++高手的挚爱。 今天就来讨论下数据结构中的树。 先梳理下关于树一些基本概念。树的基本概念(1)树(Tree)的概念:树是一种递归定义的数据结构,是一种重要的非线性数据结构。树可以是一棵空树,它没有任何的结点;也可以是一棵非空树,至少含有一个结点。(2)根(Root):有且仅有一个结点的非空树,那个结点就是根。(3)子树(Subtree):在一棵非空树中,除根外,其余所有结点可以分为m(m≥0)个互不相交的集合。每个集合本身又是一棵树,称为根的子树。(4)结点(Node):表示树中的元素及若干指向其子树的分支。(5)结点的度(Degree):一个结点拥有. 阅读全文
posted @ 2012-09-16 21:18 liuyi_001 阅读(11009) 评论(0) 推荐(1) 编辑
摘要:今天来讨论下链表中的双向链表。双向链表: 概念:在双向链表中,结点除含有数据域外,还含有两个指针域:一个存储直接后继结点的地址,称为右链域;另一个存储直接前驱结点的地址,称为左链域。typedef struct node { int num; //数值域 struct node *lnext; //左链域指针 struct node *rnect; //右链域指针}stud; 双向链表常用算法:先对三个指针作个声明:head:用来指向链表的头部。链表需要一个指针来标识,这就是头指针。p1:用来指向新结点,以及用来遍历链表的每一个结点。... 阅读全文
posted @ 2012-09-16 21:17 liuyi_001 阅读(364) 评论(0) 推荐(0) 编辑
摘要:本文就循环链表做一些讨论:循环链表: 概念:所谓循环链表,就是在单链表的基础上,把链表最后一个结点的链表指针指向链表的头结点的地址,就构成了一个循环链表。 关键算法:先对三个指针作下声明:head:用来指向链表的头部。链表需要一个指针来标识,这就是头指针。p1:用来指向新结点,以及用来遍历链表的每一个结点。p2:用来指向当前结点。(1)循环链表创建算法创建一个结点数目为n的循环链表:#include typedef struct node { int num; struct node *next; }stud;stud* Create(int n) { stud *he... 阅读全文
posted @ 2012-09-16 21:16 liuyi_001 阅读(202) 评论(0) 推荐(0) 编辑
摘要:链表主要就单链表、循环链表和双向链表3种链表进行讨论。一、单链表 概念:所谓单链表,是指数据结点是单向排列的。一个单链表结点,其结构类型分为两部分: (1)数据域:用于存储数据元素的值。 (2)指针域(链域):用于存储下一个结点地址或者说指向其直接后继结点的指针。 算法:一般声明3个指针来操作链表:head:用来指向链表的头部。链表需要一个指针来标识链表,这就是头指针。p1:用来指向新结点,以及用来遍历链表的每一个结点。p2:用来指向当前结点。(1)单链表创建算法创建结点数目为n的链表:#include typedef struct node { int num; ... 阅读全文
posted @ 2012-09-16 21:15 liuyi_001 阅读(313) 评论(0) 推荐(0) 编辑
摘要:C/C++内存存储问题是笔试中必须掌握的。先看下面的程序:#include #include "string.h" #include "malloc.h"void Swap(int a,int b) { int temp; temp=a; a=b; b=temp; }int Get_Int(int a) { int i=1+a; return i; }char* Get_Memory0() { char* p=(char*)malloc(sizeof(char)* 20); strcpy(p,"hello world"); ... 阅读全文
posted @ 2012-09-16 20:58 liuyi_001 阅读(255) 评论(0) 推荐(0) 编辑
摘要:继承和派生:(1)子类不加修改的延续父类的特征,我们把它叫做继承。(2)在原有基础上建立新类并且添加新新征的过程叫做“类的派生”。(3)把原有的类叫做“基类”,又叫“父类”,把新建的类叫做“派生类”,又叫子类。 例如:class Son : public Father(4)公有派生的公有成员仍然为公有成员;公有派生的保护成员仍然为保护成员;公有派生的私有成员是不能为派生访问的。(5)私有继承:class Son : private Father 私有方式派生的子类,父类的公有和保护成员在子类中是私有的,而私有成员是不可访问的;由于私有派生不利于继续派生,所以实际中用的不多。不管以仅有还是私有形 阅读全文
posted @ 2012-09-16 20:41 liuyi_001 阅读(161) 评论(0) 推荐(0) 编辑
摘要:代码编写Shift + Alt + Enter - 全屏显示Ctrl + J - 列出成员,仅包括代码提示Ctrl + Shift + Space - 显示参数信息Tab(按两下) - 补齐代码块,例如在try、for、do后按快速代码模板"cw" + Tab + Tab - Console.WriteLine();"mbox" + Tab + Tab - Messagebox.Show();"prop” + Tab + Tab - 含有Get、Set访问器的属性块"propg” + Tab + Tab - 只读属性快"pr 阅读全文
posted @ 2012-09-16 20:09 liuyi_001 阅读(170) 评论(0) 推荐(0) 编辑
摘要:定义和声明区别:(1)定义分配内存,声明没有(2)定义只能出现一次,而声明可以出现多次(3)extern char a[] 与extern char a[100]等价,因为这里只是声明,不分配空间(4)extern int a extern 告诉编译器a这个名字已经在别的文件定义了,下面的代码使用的名字a是别的文件定义的数组名的值:(1)在绝大多数表达式中,数组名的值是指向数组第1个元素的指针。这个规则只有两个例外:sizeof返回整个数组所占用的字节而不是一个指针所占用字节;单目操作符&返回一个指向数组的指针,而不是一个指向数组第1个元素的指针的指针高手写code的惯用法:(1)将变 阅读全文
posted @ 2012-09-16 19:26 liuyi_001 阅读(157) 评论(0) 推荐(0) 编辑