
数据结构与算法设计
文章平均质量分 67
顶狐
这个作者很懒,什么都没留下…
展开
-
数据结构学习系列六-链式栈(c++实现且应用模板)
虽然链式栈是利用链表实现的,但是它与链表类还存在着很多差别。首先,链式栈没有表头结点,而链表类为了统一对空表和非空表的操作而引人了表头结点。其次,链表栈没有表头指针和表尾指针,而链表类用这两个指针标识链表的开始和结束。最后链表中的很多方法不适用于链式栈。以下是实现了一个链表栈:(1)先定义一个链表节点的类(2)在定义一个链式栈类及其实现操作#includeusing namespace std;template class ListStackNode//定义链表节点{public:原创 2011-05-26 09:32:00 · 666 阅读 · 0 评论 -
数据结构学习系类列十六-排序总结篇
<br />前几天应一个朋友的要求,帮他完成了数据排序的一个作业。觉得很有给大家参考的价值,所以经过他同意,作了些修改帖了上来。源代码见附件,代码中实现了8种排序算法,各算法名称见下表或见源码。运行程序时,将需要你输入一数值,以确定对多少随机数进行排序。然后将会显示各排序算法的耗时。并且你可选择时否进行正序和反序测试。<br />由于水平有限,可能存在一些错误,还请各位多多指点! <br />通过实验我们可将结果列入下表。 <br />以下是VC6.0(Release)+win2000pro+128MDDR转载 2011-05-31 10:02:00 · 501 阅读 · 0 评论 -
数据结构学习系类列十五-基数排序
设单关键字的每个分量的取值范围均是C0原创 2011-05-31 09:59:00 · 417 阅读 · 0 评论 -
数据结构学习系类列十一-插入排序
<br />选择排序可以分为三种:<br />(1)直接插入排序<br />(2)二分法插入排序<br />(3)希尔排序<br />直接插入排序:<br />/*时间效率为 O(n^2),对于小数组,插入排序简单易行,对于大数组效率过低,不宜采用。*/#include<iostream>#include<vector>using namespace std;class InsertSort{private: int len; vector<int> list;p原创 2011-05-30 17:19:00 · 490 阅读 · 0 评论 -
数据结构学习系类列十二-选择排序
<br />选择排序主要有:<br />(1)直接选择排序<br />(2)堆排序<br />直接选择排序:<br />#include<iostream>#include<vector>using namespace std;class SelectSort{private: int len; vector<int> list;public: SelectSort(vector<int> m_list,int m_len); void selct_sort();原创 2011-05-30 21:15:00 · 506 阅读 · 0 评论 -
数据结构学习系类列十-链表集合(c++)
<br />1 链表集合数据结构与操作定义<br />class ListSetNode{ friend class ListSet<T>; T data; ListSetNode<T>*link;public: ListSetNode():link(NULL){} ListSetNode(T value):link(NULL),data(value){}};template<class T>class ListSet{ ListSetNode<T>* hea原创 2011-05-30 10:51:00 · 497 阅读 · 0 评论 -
数据结构学习系类列十四-归并排序
前几天应一个朋友的要求,帮他完成了数据排序的一个作业。觉得很有给大家参考的价值,所以经过他同意,作了些修改帖了上来。源代码见附件,代码中实现了8种排序算法,各算法名称见下表或见源码。运行程序时,将需要你输入一数值,以确定对多少随机数进行排序。然后将会显示各排序算法的耗时。并且你可选择时否进行正序和反序测试。由于水平有限,可能存在一些错误,还请各位多多指点! 通过实验我们可将结果列入下表。 以下是VC6.0(Release)+win2000pro+128MDDR+P4(1.6G) 因为在多任务操作系统下,系统转载 2011-05-31 09:41:00 · 332 阅读 · 0 评论 -
数据结构学习系类列八-二叉树的一些操作(c++)
二叉树的主要操作有:(1)创建一个二叉树(插入值)(2)递归法进行前序、中序、后序遍历(3)非递归法进行前序、中序、后序遍历(利用栈)(4)二叉树中节点的最大距离(5)二叉树的深度(6)在二叉树中进行信息的查找(7)二叉树节点的数目(8)二叉树中子节点的数目(9)判断两个二叉树是否等价(10)判断整数序列是不是二元查找树的后序遍历结果(11)二叉树的镜像(12)输入二叉树,从上向下按层打印,同一层从左到右(13)将二叉树转化为一个双向链表1 二叉树节点的数据结构与二叉树类的建立#include#incl原创 2011-05-28 10:32:00 · 727 阅读 · 0 评论 -
数据结构学习系列四-顺序栈(c语言实现)
顺序栈设计Stack类(1)定义好数据成员,本设计需用数组作为栈的容器且包含一个栈顶;#define STACK_SIZE 20struct Stack{ int top; int data[STACK_SIZE];};(2)实现一个栈void InitStack(Stack*s)//初始化栈bool IsEmpty(Stack*s)//判断栈是否为空bool IsFull(Stack*s)//判断栈是否满bool Push(Stack*s,int element)//向栈中压入值element原创 2011-05-25 20:18:00 · 847 阅读 · 1 评论 -
数据结构学习系列一--链表的建立(c语言实现)
1 定义链表的数据结构struct ListNode{ ListNode*Next; //指向下一个节点 int m_value; //值};2 创建链表(1) 先建立链表头和链表尾且头尾相同 printf("input number"); scanf("%d",&x); head=tail=(struct ListNode*)malloc(sizeof(struct ListNode)); head->Next=NULL; head->m_value=x;(2)利用循环进行链表的插入(尾部插原创 2011-05-24 17:05:00 · 566 阅读 · 0 评论 -
数据结构学习系列五-顺序栈(c++实现且应用模板)
注意清空栈的方法#includeusing namespace std;templateclass ArrayStack{private: int size;//栈的大小 int tos;//栈顶索引 T*contain;public: ArrayStack():size(0),tos(-1),contain(NULL){} ArrayStack(int maxsize); ~ArrayStack(); void Push(const T&element原创 2011-05-25 21:13:00 · 694 阅读 · 0 评论 -
数据结构学习系列三-单向循环链表(c++实现且应用模板)
单向循环链表且带模板的实现真正意义上c++实现节点数据结构采用class形式,为了方便操作数据结构用public。#includeusing namespace std;/*1 应用模板 2使用class定义node,而不是struct *///链表节点templateclass ListNode{public://引用public,避免了使用get,set所带来的麻烦 T data; ListNode*next;public: ListNode(ListNode原创 2011-05-25 16:32:00 · 1556 阅读 · 0 评论 -
数据结构学习系类七-循环队列(c++实现且应用模板)
<br />队列:先进先出<br />栈:先进后出<br />用数组实现的队列为链式队列。<br />class CirQueue{private: int size; int front; int back; T* contain;public: CirQueue():size(0),front(0),back(0),contain(NULL){}//构造初始化 CirQueue(int maxsize); void EnQueue(const T&element)原创 2011-05-26 11:01:00 · 976 阅读 · 0 评论 -
数据结构学习系类列十七-树形搜索
<br />树形搜索主要有:<br />1 二叉搜索树<br />2 AVL树<br />3 红黑树<br />4 Trie树<br />二叉搜索树:<br />#include<iostream>using namespace std;class BinarySearchTree;class BinaryNode{public: int element; BinaryNode*leftChild,*rightChild; BinaryNode(int m_element,B原创 2011-05-31 16:12:00 · 527 阅读 · 0 评论