随笔分类 -  【数据结构】

数据结构之【排序】复习题
摘要:第7章 排序一、选择题1.某内排序方法的稳定性是指( D )。 A.该排序算法不允许有相同的关键字记录B.该排序算法允许有相同的关键字记录C.平均时间为0(n log n)的排序方法 D.以上都不对 2.下面给出的四种排序法中( D )排序法是不稳定性排序法。 A. 插入 B. 冒泡 C. 二路归并 D. 堆3.下列排序算法中,其中( D )是稳定的。 A. 堆排序,冒泡排序 B. 快速排序,堆排序 C. 直接选择排序,归并排序 D. 归并排序,冒泡排序4.稳定的排序方法是( B ) A.直接插入排序和快速排序 B.折半插入排序和起泡排序C.简单选择排序和四路归并排序 D.树形选择排序和s.. 阅读全文

posted @ 2011-12-22 21:40 1.曲待续 阅读(20171) 评论(0) 推荐(2)

数据结构之【图】部分复习题
摘要:第六章 图一、选择题1.图中有关路径的定义是(A )。A.由顶点和相邻顶点序偶构成的边所形成的序列 B.由不同顶点所形成的序列C.由不同边所形成的序列 D.上述定义都不是2.设无向图的顶点个数为n,则该图最多有(B)条边。A.n-1 B.n(n-1)/2 C. n(n+1)/2 D.0 E.n23.一个n个顶点的连通无向图,其边的个数至少为( A )。A.n-1 B.n C.n+1 D.nlogn;4.要连通具有n个顶点的有向图,至少需要( B)条边。A.n-l B.n C.n+l D.2n5.n个结点的完全有向图含有边的数目(D )。A.n*n B.n(n+1)C.n/2 D.n*(n-l) 阅读全文

posted @ 2011-12-22 21:38 1.曲待续 阅读(7678) 评论(0) 推荐(1)

数据结构之【树形结构】复习题
摘要:第五章 树形结构 一、选择题1.已知一算术表达式的中缀形式为 A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为(D )A.-A+B*C/DE B.-A+B*CD/E C.-+*ABC/DE D. -+A*BC/DE2.算术表达式a+b*(c+d/e)转为后缀表达式后为( B) A.ab+cde/* B.abcde/+*+ C.abcde/*++ D.abcde*/++3. 设有一表示算术表达式的二叉树(见下图),它所表示的算术表达式是( C )A. A*B+C/(D*E)+(F-G) B. (A*B+C)/(D*E)+(F-G) C. (A*B+C)/(D*E+(F-G)) D. 阅读全文

posted @ 2011-12-22 21:36 1.曲待续 阅读(8062) 评论(0) 推荐(0)

数据结构之【数组和广义表】复习题
摘要:第 4 章 数组和广义表一、选择题1. 将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1‥298]中,A中元素A6665(即该元素下标i=66,j=65),在B数组中的位置K为( B )。供选择的答案:A. 198 B. 195 C. 197 2. 二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈从1到10。从供选择的答案中选出应填入下列关于数组存储叙述中( )内的正确答案。(1)存放A至少需要(E )个字节;(2)A的第8列和第5行共占( A )个字节;(3)若A按行存放,元素A[8,5]的起始地址与A按列存放时的元素( B )的起. 阅读全文

posted @ 2011-12-22 21:32 1.曲待续 阅读(9630) 评论(0) 推荐(0)

数据结构【栈、队列、串】复习题
摘要:第三章 栈和队列一 选择题1. 对于栈操作数据的原则是( B )。A. 先进先出 B. 后进先出 C. 后进后出 D. 不分顺序2. 在作进栈运算时,应先判别栈是否( ① B ),在作退栈运算时应先判别栈是否( ② A)。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为( ③B )。为了增加内存空间的利用率和减少溢出的可能性,由两个栈共享一片连续的内存空间时,应将两栈的 ( ④ D)分别设在这片内存空间的两端,这样,当( ⑤C )时,才产生上溢。①, ②: A. 空 B. 满 C. 上溢 D. 下溢 ③: A. n-1 B. n C. n+1 D.n/2 ④: A. 长度 B.. 阅读全文

posted @ 2011-12-20 20:40 1.曲待续 阅读(5459) 评论(0) 推荐(0)

数据结构【线性表】复习题
摘要:第2章 线性表一 选择题1.下述哪一条是顺序存储结构的优点?( A )A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?( B )A.线性表采用顺序存储,必须占用一片连续的存储单元。B.线性表采用顺序存储,便于进行插入和删除操作。C.线性表采用链接存储,不必占用一片连续的存储单元。D.线性表采用链接存储,便于插入和删除操作。3.线性表是具有n个( C )的有限序列(n>0)。 A.表元素 B.字符 C.数据元素 D.数据项 E.信息项4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除 阅读全文

posted @ 2011-12-20 20:14 1.曲待续 阅读(18415) 评论(2) 推荐(0)

数据结构之链表合并算法
摘要://链表合并算法(包括一些基本运算) #include<iostream> using namespace std; typedef char datatype; //结点数据类型,假设为char typedef struct node * pointer; //结点指针类型 struct node //结点结构 { datatype data; pointer next; }; typedef pointer lklist; //单链表类型,即头指针类型 //链表初始化 lklist initlist() //建立一个只有头结点的空表... 阅读全文

posted @ 2011-12-19 22:16 1.曲待续 阅读(933) 评论(0) 推荐(0)

数据结构之归并排序
摘要://编写一个归并排序程序,并在main函数中验证结果/**归并排序(Merging Sort)是利用“归并”技术进行排序,所谓归并*是指将若干个已排序好的子表合并成一个有序表 *最简单的归并是将两个有序的子表合并成一个有序表。假设R[low]*到R[mid]和R[mid+1]到R[high]是存储在同一个数组中且相邻的两个有序表*要将它们合并为一个有序表R1[low]到R1[high],只要设置3个指示器i,j和k,*其初值分别是这3个记录区的起始位置。合并时依次比较R[i]和R[j]的关键字,*取关键字较小的记录复制到R1[k]中,然后,将指向复制记录的指示器加1和*指向复制位置的指示器加1 阅读全文

posted @ 2011-12-09 23:43 1.曲待续 阅读(502) 评论(0) 推荐(0)

数据结构之选择排序
摘要://编写一个直接选择排序程序,并在main函数中实现其功能/**直接选择排序是一种比较简单的排序方法,它的做法是:首先,*所有记录组成初始化无序区R[1]到R[n],从中选出键值最小的记录,*与无序区第一个记录R[1]交换,新的无序区R[2]~R[n],从中再选出键值*最小的记录,与无序区第一个记录R[2]交换;又形成新的无序区R[3]~R[n]*一直进行这样的选择排序,进行n-1趟排序后,整个排序表就全部有序了。*具体实现如下:* 1 2 3 4 5 6 7 8初始关键字: 49 38 65 97 76 13 27 49'第一趟排序: 13 【38 65 97 76 ... 阅读全文

posted @ 2011-12-09 21:22 1.曲待续 阅读(396) 评论(0) 推荐(0)

数据结构之快速排序
摘要:/*3. 编写一个快速排序的算法,并且在main函数中验证其功能已实现*快速排序(Quick Sort)又称划分交换排序,基本思想:在待排序的n*个记录中记录中任取一个作为“基准”,将其余记录分为两组,第一组中*各记录的键值均小于或等于基准的键值,第二组中各记录的键值均大于*或等于基准的键值,而基准就排在这两组中间(这也是该记录的最终位置),*这称为一趟快速排序(或一次划分)。对所分成的两组分别重复上述方法,*直到所有记录都排在适当位置为止。*快速排序过程实际上是一种“分治法”:通过划分得到两个子区间,对每个子*区间进行同样出理后,将结果组合起来就是问题的解。*/#include<ios 阅读全文

posted @ 2011-12-02 23:48 1.曲待续 阅读(250) 评论(0) 推荐(0)

数据结构之冒泡排序
摘要:/**2. 编写一个冒泡排序的算法,并且在main函数中验证其功能已实现*冒泡排序(Bubble Sort)的基本思想,设想排序R[1]到R[n]垂直放置,将记录*R[i]看作是重量为R[i].key的气泡;根据气泡不能在重气泡之下的原则,从下往*上扫描数组R,凡违反原则的轻气泡,就使其向上“飘浮”,如此反复进行,直到*最后任何两个气泡都是轻者在上,重者在下为止。就好像气泡从水中上冒一样*趟次 0(初始) 1 2 3 4 5 6 7 49 13 13 13 13 13 13 13 38 49 27 27 27 27 27 27 65 38 49 38 38 38 38 38 97 ... 阅读全文

posted @ 2011-12-02 22:11 1.曲待续 阅读(600) 评论(0) 推荐(0)

数据结构之希尔排序(谢尔排序)
摘要:/**1. 编写一个希尔排序的算法,并且在main函数中验证其功能已实现*希尔排序(Shell's Method)又称“缩小增量排序”,它的基本方法是:*将排序表分成若干组,所有相隔为某个“增量”的记录为一组,在各组内*进行直接排序;初始时增量d1较大,分组越多(每组的记录数少),以后*增量逐渐减少,分组减少(每组的记录数增多),直到最后增量为1,所有*记录放为同一组,怎整体进行一次直接插入排序*下面一个具体例子。取排序表如下,增量序列取为5,3,1*排序过程如下: 1 2 3 4 5 6 7 8*初始关键字: 49 38 65 97 76 13 27 49'd1=5 ... 阅读全文

posted @ 2011-12-02 20:08 1.曲待续 阅读(1686) 评论(0) 推荐(0)

哈夫曼树算法(数据结构C++描述)
摘要://哈夫曼树算法 #include<iostream> using namespace std; const int n=5; const int m=2*n-1; const int float_max=20; typedef int datatype; typedef struct { float weight; //定义权重 int parent; //定义双亲在向量中的下标 int lchild,rchild; //定义左右子树 } nodetype; //结点类型 typedef nodetype hftree[m]; //哈夫曼树类型,数组从0号单元开始使... 阅读全文

posted @ 2011-11-26 22:28 1.曲待续 阅读(5169) 评论(0) 推荐(0)

百分制转换为五分制的算法
摘要:/*编写一个将百分制转换为五分制的算法(使用if-else语句), 要求平均比较次数尽可能少.假设学生成绩分布如下: 等级 A B C D E 分数 90~100 80~89 70~79 60~69 0~59 百分比 0.18 0.23 0.31 0.15 0.13 */ #include<iostream> using namespace std; //分类与判定 char trans(float x) { if(x>=80) if(x>=90) return 'A'; else retu... 阅读全文

posted @ 2011-11-26 16:50 1.曲待续 阅读(10865) 评论(0) 推荐(0)

直接插入排序算法
摘要://编写一个插入排序的算法,并且在main函数中验证其功能已实现 #include<iostream> using namespace std; const int maxsize=100; //排序表容量,假设为100 typedef int datatype; typedef struct { datatype key; //关键字域 datatype other; //其他域 } rectype; //记录类型 typedef rectype list[maxsize+1]; //排序表类型,0号单元不用 void InsertSort(list R... 阅读全文

posted @ 2011-11-26 16:12 1.曲待续 阅读(174) 评论(0) 推荐(0)

遍历二叉树的基本运算
摘要:/*3. 完成对二叉树的二叉链表结构的定义。 并编写算法生成一棵二叉树, 以及编写二叉树的先序遍历、中序遍历、后序遍历算法, 并且验证各算法功能已实现。*/ #include<iostream> using namespace std; typedef char datatype; typedef struct node *pointer; //结点指针类型 struct node //结点类型 { datatype data; pointer lchild,rchild; }; typedef pointer bitree; /... 阅读全文

posted @ 2011-11-16 09:34 1.曲待续 阅读(373) 评论(0) 推荐(0)

对三角矩阵进行压缩存储为一维数组
摘要:/*1. 已知矩阵A[5][5]是一个下三角矩阵,如下图 要求编写算法把矩阵A采用压缩存储,存储到一维数组B[16]中, 并且依次输出B中各元素的值以验证该算法功能已实现 */ #include<iostream> using namespace std; const int m=5; const int n=5; const int c=16; int B[c]; //定义一维数组B[16],长度为16 //初始化数组A[5][5] int A[m][n]={{1},{4,7},{6,9,5},{1,8,4,1},{2,3,0,9,6}}; int main(... 阅读全文

posted @ 2011-11-16 09:32 1.曲待续 阅读(1322) 评论(0) 推荐(0)

(链表实现)写出两个一元多项式相加的算法
摘要:/*实验23. 试写出两个一元多项式相加的算法。用链表来存储一元多项式,并且要在程序中验证其功能实现。此题的源程序保存为2_e1.cpp*/#include<iostream>using namespace std;struct node{ int co; //系数 int exp; //指数 struct node * next;};node* Creat() {//尾插法建表,有头结点 node* head; node* s, *p; int c, e; head=new node; //生成头结点 head->next=NULL; cout<<"请 阅读全文

posted @ 2011-10-22 10:06 1.曲待续 阅读(9543) 评论(0) 推荐(0)

顺序栈
摘要:/*实验22. 完成对顺序栈结构的定义,以及对顺序栈的各种基本运算的实现(每种基本运算用一个函数来实现)。基本运算包括:初始化Init_sqstack运算、判栈空Empty_sqstack运算、入栈Push_sqstack运算、出栈Pop_sqstack运算、取栈顶元素Gettop_sqstack运算。并且在main函数中分别调用以上各种基本运算的函数来使用,以证明其功能已实现。此题的源程序保存为 3_a1.cpp。*/#include<iostream>using namespace std;typedef char datatype; //栈元素类型,假设为整型const in 阅读全文

posted @ 2011-10-22 10:04 1.曲待续 阅读(261) 评论(0) 推荐(0)

写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点
摘要:/*实验21. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点(low和high的值是多少可自由设计)。并且要在程序中验证其功能实现。(可在实验1的第3题的基础上增加此功能)。此题的源程序保存为 2_a4.cpp。*/#include<iostream>using namespace std;typedef char datatype;typedef struct node* pointer;struct node{ datatype data; pointer next;};typedef node* lklist;lklist Creat() 阅读全文

posted @ 2011-10-22 10:03 1.曲待续 阅读(550) 评论(0) 推荐(0)

导航