排序(sort)或分类
一:
所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。其确切定义如下:
输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn。
输出:Ril,Ri2,…,Rin,使得Ki1≤Ki2≤…≤Kin。(或Ki1≥Ki2≥…≥Kin)。
1.被排序对象--文件
被排序的对象--文件由一组记录组成。
记录则由若干个数据项(或域)组成。其中有一项可用来标识一个记录,称为关键字项。该数据项的值称为关键字(Key)。
在待排序的文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字...


- [wukong] 这是钱林松老师的课件摘录的,讲的比这还详细 03/07 19:40
- [wukong] 只是方便用户,对象可以向基本类型那样,进行+-等运算。 03/07 19:38
- [chinatree] 不懂,什么书讲这么详细? 03/07 11:20
- [chinatree] 重载不是相同函数只是参数不同吗?运算符怎么重载?作用是什么? 03/07 11:13
- [tomato] c++的基本思想和java基本差不多,只是有一些细节的差别。 03/05 20:33
- [tomato] 我不是什么老师,只是一个搞技术的程序员。 03/05 20:32
- [tomato] 支持你! 03/04 23:07
- [wukong] 是的,一定努力,多动手,谢谢!!! 03/04 22:52
- [tomato] 明白了C++中的构造函数和析构函数,谢谢博主的这篇博文。嘿嘿。 03/04 22:30
- [tomato] 开始学习C++了?不仅要学习知识还要实验才行。 03/04 22:26
[2012-02-28 22:28] 数据结构排序一:基本排序
阅读全文 |
评论次数(2) |
浏览次数(328) |
所属类型(数据结构)
[2012-02-27 20:20] 数据结构基本数据结构之二叉树三基本操作
typedef char ElemType;
typedef struct Node{
char data;
struct Node * lchild;
struct Node * rchild;
}BitNode,*BiTree;//二叉树节点,二叉链表
基本操作:
InitBiTree( &T )
操作结果:构造空二叉树T。
int InitBiTree(BiTree *bt)
{
(*bt) = malloc(sizeof(BitNode));
if((*bt)==NULL)
return 0;
(*bt)->lchild = NULL;
...
typedef struct Node{
char data;
struct Node * lchild;
struct Node * rchild;
}BitNode,*BiTree;//二叉树节点,二叉链表
基本操作:
InitBiTree( &T )
操作结果:构造空二叉树T。
int InitBiTree(BiTree *bt)
{
(*bt) = malloc(sizeof(BitNode));
if((*bt)==NULL)
return 0;
(*bt)->lchild = NULL;
...
阅读全文 |
评论次数(0) |
浏览次数(287) |
所属类型(数据结构)
[2012-02-27 14:04] 数据结构基本数据结构之二叉树遍历
遍历概念
所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。
从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:
(1)访问结点本身(N),
(2)遍历该结点的左子树(L),
(3)遍历该结点的右子树(R)。
三种遍历的命名
根据访问结点操作发生位置命名:
① NLR:前序遍历(PreorderTraversal亦称(先序遍历))
——访...
所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。
从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作:
(1)访问结点本身(N),
(2)遍历该结点的左子树(L),
(3)遍历该结点的右子树(R)。
三种遍历的命名
根据访问结点操作发生位置命名:
① NLR:前序遍历(PreorderTraversal亦称(先序遍历))
——访...
阅读全文 |
评论次数(0) |
浏览次数(344) |
所属类型(数据结构)
[2012-02-25 22:07] 数据结构基本数据结构之二叉树一
1树的递归定义:
树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:
(1)有且仅有一个特定的称为根(Root)的结点;
(2)其余的结点可分为m(m≥0)个互不相交的子集Tl,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(Subree)。
如果一个无向简单图G 满足以下相互等价的条件之一,那么G 是一棵树:
• G 是没有回路的连通图。
• G 没有回路,但是在G内添加任意一条边,就会形成一个回路。
• G 是连通的,但是如果去掉任意一条边,就不再连通。
• G 是连通的,并且3顶点的完全图 K3 不是G...
树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:
(1)有且仅有一个特定的称为根(Root)的结点;
(2)其余的结点可分为m(m≥0)个互不相交的子集Tl,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(Subree)。
如果一个无向简单图G 满足以下相互等价的条件之一,那么G 是一棵树:
• G 是没有回路的连通图。
• G 没有回路,但是在G内添加任意一条边,就会形成一个回路。
• G 是连通的,但是如果去掉任意一条边,就不再连通。
• G 是连通的,并且3顶点的完全图 K3 不是G...
阅读全文 |
评论次数(2) |
浏览次数(477) |
所属类型(数据结构)
[2012-02-24 20:44] 数据结构基本数据结构之字符串习题
字符串习题
1. 利用c的库函数strlen strcpy 写一个算法void StrDelete(char*s,int I,int m),
删除串s中从位置i开始的连续的m个字符。若i>=strlen(s),则没有字符被删除,若i+m>=strlen(s),则将s中从位置i开始直至末尾的字符均被删去。
Code:
/*
i从0开始
*/
void StrDelete(char*s,int i,int m)
{
int len = strlen(s);
if(i>=len-1||i<0)
return;
if(i+m>=len)
{
*(s+i)=...
1. 利用c的库函数strlen strcpy 写一个算法void StrDelete(char*s,int I,int m),
删除串s中从位置i开始的连续的m个字符。若i>=strlen(s),则没有字符被删除,若i+m>=strlen(s),则将s中从位置i开始直至末尾的字符均被删去。
Code:
/*
i从0开始
*/
void StrDelete(char*s,int i,int m)
{
int len = strlen(s);
if(i>=len-1||i<0)
return;
if(i+m>=len)
{
*(s+i)=...
阅读全文 |
评论次数(0) |
浏览次数(474) |
所属类型(数据结构)
[2012-02-24 12:56] 数据结构基本数据结构之字符串匹配
字符串匹配
字符串匹配算法是计算机程序中比较常见的算法,它是指现在有一个目标串,给你一个模式串,要求你在该目标串中找出模式串出现的地方。字符串匹配算法由两部分组成:预处理阶段和匹配阶段。
假设 目标串为T[1…n] 模式串为P[1…m] T和P中记录都是在有限集合∑中,如记录是十进制数字时,∑={0,1,2,3,4,5,6,7,8,9,},记录是字符时,∑={a,b,c……,x,y,z}.
1.①朴素匹配算法:核心思想:既然给我一个目标串T,一个模式串P,要在T中找出P出现的所有位置。那我就找,从第i(0,1,2,3……)个元素开始进行匹配,如果匹配成功则输...
字符串匹配算法是计算机程序中比较常见的算法,它是指现在有一个目标串,给你一个模式串,要求你在该目标串中找出模式串出现的地方。字符串匹配算法由两部分组成:预处理阶段和匹配阶段。
假设 目标串为T[1…n] 模式串为P[1…m] T和P中记录都是在有限集合∑中,如记录是十进制数字时,∑={0,1,2,3,4,5,6,7,8,9,},记录是字符时,∑={a,b,c……,x,y,z}.
1.①朴素匹配算法:核心思想:既然给我一个目标串T,一个模式串P,要在T中找出P出现的所有位置。那我就找,从第i(0,1,2,3……)个元素开始进行匹配,如果匹配成功则输...
阅读全文 |
评论次数(0) |
浏览次数(368) |
所属类型(数据结构)
[2012-02-22 18:37] 数据结构基本数据结构之串(二)
5. 串的基本运算
字符串转换操作:
atof(将字符串转换成浮点型数)
atoi(将字符串转换成整型数)
atol(将字符串转换成长整型数)
gcvt(将浮点型数转换为字符串,取四舍五入)
strtod(将字符串转换成浮点数)
strtol(将字符串转换成长整型数)
strtoul(将字符串转换成无符号长整型数)
toascii(将整型数转换成合法的ASCII 码字符)
tolower(将大写字母转换成小写字母)
toupper(将小写字母转换成大写字母)
rindex(查找字符串中最后一个出现的指定字符)
strcasecmp(忽略大小写比较字符串)
str...
字符串转换操作:
atof(将字符串转换成浮点型数)
atoi(将字符串转换成整型数)
atol(将字符串转换成长整型数)
gcvt(将浮点型数转换为字符串,取四舍五入)
strtod(将字符串转换成浮点数)
strtol(将字符串转换成长整型数)
strtoul(将字符串转换成无符号长整型数)
toascii(将整型数转换成合法的ASCII 码字符)
tolower(将大写字母转换成小写字母)
toupper(将小写字母转换成大写字母)
rindex(查找字符串中最后一个出现的指定字符)
strcasecmp(忽略大小写比较字符串)
str...
阅读全文 |
评论次数(3) |
浏览次数(445) |
所属类型(数据结构)
[2012-02-22 17:38] 数据结构基本数据结构之串(一)
1 串(又称字符串)是一种特殊的线性表,它的每个结点仅由一个字符组成。
串(String)是零个或多个字符组成的有限序列。一般记为
S="a1a2……an"
①S是串名
②双引号括起的字符序列是串值;
将串值括起来的双引号本身不属于串,它的作用是避免串与常数或与标识符混淆。
③ai(1≤i≤n)可以是字母、数字或其它字符;
④串中所包含的字符个数称为该串的长度
2、空串和空白串
长度为零的串称为空串(Empty String),它不包含任何字符。
仅由一个或多个空格组成的串称为空白串(...
串(String)是零个或多个字符组成的有限序列。一般记为
S="a1a2……an"
①S是串名
②双引号括起的字符序列是串值;
将串值括起来的双引号本身不属于串,它的作用是避免串与常数或与标识符混淆。
③ai(1≤i≤n)可以是字母、数字或其它字符;
④串中所包含的字符个数称为该串的长度
2、空串和空白串
长度为零的串称为空串(Empty String),它不包含任何字符。
仅由一个或多个空格组成的串称为空白串(...
阅读全文 |
评论次数(0) |
浏览次数(299) |
所属类型(数据结构)
[2012-02-21 17:27] 数据结构第三章基本数据结构之队列
队列的定义及基本运算
1.队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表
(1)允许删除的一端称为队头(Front)。
(2)允许插入的一端称为队尾(Rear)。
(3)当队列中没有元素时称为空队列。
(4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。
2、队列的基本逻辑运算
(1)InitQueue(Q)
置空队。构造一个空队列Q。
(2)QueueEmpty(Q)
判队空。若队列Q为空,则返回真值,否则返回假值。
(3) QueueFull(Q)
判队...
1.队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表
(1)允许删除的一端称为队头(Front)。
(2)允许插入的一端称为队尾(Rear)。
(3)当队列中没有元素时称为空队列。
(4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表。
2、队列的基本逻辑运算
(1)InitQueue(Q)
置空队。构造一个空队列Q。
(2)QueueEmpty(Q)
判队空。若队列Q为空,则返回真值,否则返回假值。
(3) QueueFull(Q)
判队...
阅读全文 |
评论次数(0) |
浏览次数(290) |
所属类型(数据结构)
[2012-02-20 20:29] 数据结构第三章基本数据结构之栈的应用三(背包问题)
背包问题的求解
假设有一个能装入总体积为T的背包和n件体积为w1,w2,…….wn的物品,选出若干件体积等于T的物品的各种选择.举例:T=10,w1=1,w2=8,w3=4,w4=3,w5=5,w6=2;
有四组解(1,4,3,2),(1,4,5),(8,2),(3,5,2)
解决的思路:利用栈保存选择的物品,利用回溯法来选择物品,当当前总体积不足时,选择余下物品,当剩余物品都不满不足时,弹出栈顶元素,(不合适),选择该元素后面的物品,当满足=T时,输出栈中物品, 弹出栈顶元素 ,选择该元素后面的物品,继续执行,结束条件是栈空,所有的选择都选择完了.
Code:
////...
假设有一个能装入总体积为T的背包和n件体积为w1,w2,…….wn的物品,选出若干件体积等于T的物品的各种选择.举例:T=10,w1=1,w2=8,w3=4,w4=3,w5=5,w6=2;
有四组解(1,4,3,2),(1,4,5),(8,2),(3,5,2)
解决的思路:利用栈保存选择的物品,利用回溯法来选择物品,当当前总体积不足时,选择余下物品,当剩余物品都不满不足时,弹出栈顶元素,(不合适),选择该元素后面的物品,当满足=T时,输出栈中物品, 弹出栈顶元素 ,选择该元素后面的物品,继续执行,结束条件是栈空,所有的选择都选择完了.
Code:
////...
阅读全文 |
评论次数(1) |
浏览次数(571) |
所属类型(数据结构)