
c.c++.数据结构
文章平均质量分 74
小许
这个作者很懒,什么都没留下…
展开
-
浙大计算机研究生复试上机考试-2010年 .
题目一:/************************************************************************/ /* A+B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 604转载 2012-02-23 16:27:08 · 1651 阅读 · 0 评论 -
用三列二维数组表示的稀疏矩阵类
1.稀疏矩阵:矩阵中绝大多数的元素值为零,只有少数的非零元素值;2.对稀疏矩阵采用压缩存储的目的是为了节省存储空间,并且,稀疏矩阵压缩存储后,还要能够比较方便地访问其中的没个元素(包括零元素和非零元素);3.对稀疏矩阵进行压缩存储有两种方法:稀疏矩阵的三列二维数组表示和十字链表方法。稀疏矩阵的三列二维数组表示: (1)每个非零元素用三元组表示:(i,j,v)分别对应(行,列,原创 2012-08-16 10:33:06 · 8835 阅读 · 0 评论 -
用三元组链表表示的稀疏矩阵类
稀疏矩阵类:XL_array.h#include #include using namespace std;template struct B{ int i; /*非零元素行号*/ int j; /*非零元素列号*/ T v; /*非零元素值*/ B *next; /*原创 2012-08-20 12:34:32 · 2256 阅读 · 0 评论 -
用十字链表表示的稀疏矩阵类
总结:(一)在用十字链表结构表示稀疏矩阵时,矩阵中的每一个非零元素对应一个结点,每个结点五个域:行域,列域,值域,向下域和向右域,行域和列域分别存放非零元素所在的行号和列号,值域存放非零元素的值,向下域指示同一列中下一个非零元素的存储结点序号,向右域指示同一行中下一个非零元素的存储结点序号。(二)十字链表表示稀疏矩阵的结构特点如下:(1)稀疏矩阵每一行每一列均用带表头结点的循环链表表示原创 2012-08-31 11:14:45 · 3250 阅读 · 1 评论 -
图邻接表类(图的遍历方法,最短距离及路径)
一:总结图的基本概念:1.图分为有向图(入度和出度)和无向图(最大边数n(n-1)/2);2.图的存储结构:1)关联矩阵(表示了图的结构,即图中各结点的后件关系):表示各个结点的前件与后件关系,矩阵R(i,j)=1,表示结点i是结点j的前件,矩阵R(i,j)=0,表示结点i不是结点j的前件,无向图的关联矩阵是对称矩阵,且对角线上的元素均为0.有向图的不一定是对称矩阵且对角线不一定为0;原创 2012-10-04 12:11:03 · 7372 阅读 · 6 评论 -
查找技术:有序表的对分查找(折半查找)类
一 查找技术相关总结:1.顺序查找:(1)如果线性表为无序表(即表中元素的排序是无序的),则不管是顺序存储结构还是链式存储结构,都只能用顺序查找;(2)即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。2.有序表的对分查找:条件:顺序存储的有序表。3.分块查找(又称索引顺序查找):分块有序表结构分为两部分(1)线性表本身采用顺序存储结构(2)在建立一个索引表,在索引表中,对线性原创 2012-10-07 17:44:24 · 6055 阅读 · 0 评论 -
Hash表技术:线性hash表类
1. Hash表技术的基本思想是:对被查元素的关键字做某种运算后直接确定所要查找项目在表中位置。2.线性Hash表类:Linear_hash.h#include using namespace std;//线性hash表结点类型template struct Hnode{ int flag;//标志表项的空与非空 T key; //关键字};tem原创 2012-10-08 09:07:19 · 1996 阅读 · 0 评论 -
文件输入和输出简单示例
1.文件输入输出要包含头文件,一般不需再加.2.具体实例:#include #include #include using namespace std;int main(){ string filename; cout<<"Please enter the filename:\n"; cin>>filename; ofstream fout; fout.open(fil原创 2012-10-29 16:53:44 · 650 阅读 · 0 评论 -
使用类:vector类来模拟随机行走
其中有涉及到:名称空间,类的封装,符号重载,友元函数,但这个程序还不够完美,有些地方还有待提高。1. vector.h文件#ifndef VECTOR_H_#define VECTOR_H_#includeclass vector{private: double x; double y; double mag;//length of vector double ang原创 2012-10-24 21:36:58 · 664 阅读 · 0 评论 -
平衡多层索引树:B-树类
1.B-树的定义如下:一颗2m+1阶(每个结点可包括2m个关键字,2m+1个指针)的B-树,度为2m+1的树:(1).树中每个结点最多有2m+1棵子树,且除根结点外的所有非叶子结点至少有m+1棵树,而根结点至少有两棵树;(2).所有叶子结点均在最后一层上;(3).除叶子结点外的每个结点结构如图所示:(4).所有叶子结点中的指针域为空。2.B-树类:#include #原创 2012-11-13 15:44:25 · 1288 阅读 · 0 评论 -
冒泡排序简单应用
一 总结:排序技术:1.互换类排序:冒泡排序,快速排序。2.插入类排序:简单插入排序,希尔排序。3.选择类排序:简单选择排序,堆排序。4.其他类排序:归并排序,基数排序。二、冒泡排序c++描述:#include using namespace std;template void bubsort(T p[],int n){ int m,k,i,j; T d; k原创 2012-11-23 15:14:18 · 766 阅读 · 0 评论 -
快速排序简单应用
一 快速排序基本思想步骤:在实际应用中,要 用到递归,反复进行分割,分割后又快速排序。1.在表第一个、中间一个与最后一个元素中取中间值项,设为P(k),并将P(k)赋予T,再将表的第一个元素移动P(k)的位置;2.然后设指针i,j分别指向表的起始和最后位置。3.反复做以下两步:(1)将 j 逐渐减小,并逐次比较P(j)与T,直到发现P(j)原创 2012-11-23 16:34:44 · 676 阅读 · 0 评论 -
带链栈类
带链栈类也就是链式存储方式的栈:文件名 linked_Stack.h#include using namespace std;template struct node{ T d; node * next;};templateclass linked_Stack{private: node *top;public: linked_Stack原创 2012-07-29 22:12:14 · 3702 阅读 · 0 评论 -
线性表顺序存储优缺点,线性链表的优缺点
线性表的顺序存储 优点: 具有简单、运算方便等优点,特别是对于小线性表或长度固定的线性表,采用顺序存储结构的优越性更为突出; 缺点:1.顺序存储插入与删除一个元素,必须移动大了的数据元素,以此对大的线性表,特别是在元素的插入和删除很频繁的情况下,采取顺序存储很是不方便,效率低; 2.顺序存储空间容易满,出现上溢,程序访问容易出问题,顺序存储结构下,存储空间不便扩原创 2012-07-28 12:18:13 · 11285 阅读 · 0 评论 -
学习继承和派生类
一、继承的概念继承是面向对象语言的一个重要机制,通过继承可以在一个一般类的基础上建立新类。被继承的类成为基类,在基类上建立的新类称为派生类,太儿戏了,哈哈。单继承:一个类只有1个基类多继承:一个类有2个或2个以上的基类二、继承的格式1.单继承class : {};2.多继承class : , {};3.补充--默认继承的转载 2012-02-23 17:20:45 · 954 阅读 · 0 评论 -
C++多态性与虚函数
C++多态性与虚函数本讲基本要求 * 掌握:多态性的概念;虚函数的定义及应用。 * 理解:对象与类函数的静态关联与动态关联。 重点、难点: :多态性的概念;虚函数的定义及应用。 一、多态性的概念定义: 多态性(polymorphism)是面向对象程序设计的一个重要特征。利用多态性可以设计和实现一个易于扩展的系统。多态性是指具有不同功能的函数转载 2012-04-12 21:49:47 · 1320 阅读 · 0 评论 -
C++文件读写总结
在C++中如何实现文件的读写?先看简单的C++源程序:#include #include #include void main(){ using namespace std;/* ofstream ofs("4.txt");ofs.write("http://www.baidu.com",strlen(www.baidu.com));ofs.close();*/ /* ofst原创 2012-04-15 14:52:44 · 958 阅读 · 0 评论 -
带链队列类
带链队列类:文件名 linked_Queue.h#include using namespace std;template struct node{ T d; node *next;};template class linked_Queue{private: node *front,*rear;public: linked_Queu原创 2012-08-06 09:37:17 · 2370 阅读 · 0 评论 -
(单向)循环链表类
循环链表类:文件名:linked_CList.h#include using namespace std;template struct node{ T d; node * next;};template class linked_CList{private: node *head; //循环表头指针public: linked_CLis原创 2012-08-06 10:45:15 · 634 阅读 · 0 评论 -
多项式类(循环链表)
多项式的表示与运算:在计算机中表示这个多项式是,可以用一块连续的存储空间(例如用一维数组)来依次存放n+1个系数ai(i=0,2...n),这种表示方式中,即使某次项的系数为0,该系数也必须要存储。当多项式中存在大量的零系数是,这样太浪费空间了;而采用链表表示多项式是,对多项式每个非零系数的项构成链表中的一个结点,而对于系数为零的项就不用表示。一.多项式类:文件名 Poly.h#i原创 2012-08-07 22:24:40 · 1384 阅读 · 0 评论 -
数据结构:线性表(顺序存储)顺序表类(实现顺序表的创建,输出,插入,删除功能)
线性表顺序存储一般就是以数组的形式存储,一切都是对数组的操作,下面给出一个类定义的头文件,和一个实例顺序表类:文件名 sq_LList.h #include using namespace std;template class sq_LList{private: int mm; //存储空间容量 int nn; //顺序表长度 T *v; //顺序原创 2012-07-26 10:49:25 · 12635 阅读 · 0 评论 -
数据结构:线性表(顺序存储)顺序栈类(实现创建,输出,入栈出栈,读栈顶元素功能)
下面给出顺序栈类代码和应用实例供参考:顺序栈类:文件名 sq_Stack.h#includeusing namespace std;template class sq_Stack{private: int mm; //存储空间容量 int top; //栈顶指针 T *s; //顺序栈存储空间首地址public: sq_Stack(int);原创 2012-07-26 11:36:22 · 8563 阅读 · 1 评论 -
顺序表(顺序存储)循环队列类(初始化,入队,退队,输出排头与排尾指针及元素)
循环队列类:文件名 sq_Queue.h判断队列有无数据根据s的值可判断,如果s=0,则说明为空,反之,不为空时,还要判断是否为满,满的条件是(s==0&&(rear==front));注意:入队与出队,rear和front 都是加1;#include using namespace std;template class sq_Queue{private: int mm;/原创 2012-07-28 11:00:40 · 1983 阅读 · 0 评论 -
线性链表类
线性链表类:文件名 Linked_List.h#include using namespace std;template //定义结点类型struct node { T d; node *next;};template //T为虚拟类型class Linked_List{private: node *head;public: Li原创 2012-07-28 13:37:02 · 647 阅读 · 0 评论 -
简单插入排序和希尔排序简单应用
一 . 简单插入排序:是指将无序序列中的各元素依次插入到已经有序的线性表中, 思想就是:在一个无序表中,把最初始第一个元素作为有序表,从第二个数开始一直到最后都插入到前面 有序表中,最终就得到有序表了。 希尔排序: 对插入排序做了较大改进,基本思想就是把整个无序序列分割成若干个小的子序列分别进行插入排序。不如最开始把相隔k=n/2的值作为一个子序列分别进行 插入排序,排序完原创 2012-11-23 19:45:27 · 1014 阅读 · 0 评论