
数据结构
文章平均质量分 82
Irean_Lau
Flow, Ambitious Geek, Apathy
展开
-
常见的链表操作
#include #include #define LEN sizeof(struct student ) #define NULL 0 struct student { int num; float score; struct student *next; }; int n; //建立链表 struct student原创 2015-03-10 21:27:17 · 908 阅读 · 0 评论 -
next数组求解
我们在一个母字符串中查找一个子字符串有很多方法。KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。 当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容。在KMP算法中有个数组,叫做前缀数组,也有的叫next数组,每一个子串有一个固定的next数组,它记录着字符串匹配过程中失配情况下可以向前多原创 2016-04-01 14:49:56 · 1204 阅读 · 0 评论 -
avl与红黑树
1 好处 及 用途 红黑树 并不追求“完全平衡 ”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。 红黑树能够以 O(log2 n) 的时间复杂度进行搜索、插入、删除操作。此外,由于它的设计,任何不平衡都会在三次旋转之内解决。当然,还有一些更好的,但实现起来更复杂的数据结构 能够做到一步旋转之内达到平衡,但红黑树能够给我们一个比较“便宜”的解决方案。红黑树原创 2016-04-01 14:44:10 · 568 阅读 · 0 评论 -
【C++数据结构】模版类实现双循环链表的基本操作
单链表结构为我们提供方便分数据插入和删除工作,美中不足的是查询数据不方便,对于单链表查找数据至少要遍历一边. 为此我们提出双链表结构,从而方便的查询数据.给出双链表的一般结构:一种是带头结点(哨兵位)的管理方式,另一种是带管理节点管理方式。 但是我们不建议采用管理节点和头结点并存的方式(管理较前两者复杂)。提供带头结点的双循环链表模版类原创 2015-08-23 16:29:59 · 1282 阅读 · 0 评论 -
【C++数据结构】几种单链表的模类板实现及基本操作
提供代码如下:循环单链表:#pragma once#include #include using namespace std;typedef enum { FALSE, TRUE }Status;template class SCList;template class Node{ friend class SCList;public: Nod原创 2015-08-23 18:15:24 · 1273 阅读 · 0 评论 -
【C++数据结构】顺序表的模版类实现
所谓顺序表指的是线性表中元素存储的方式是连续的,即在逻辑上相邻的元素在内存上也是相邻的。所有的元素都可以实现随机存取。 但缺点是,删除的个别操作会移动大量元素。代码实现如下:头文件:#pragma once#include #include #define Swap(a,b,c) ((c)=(a),(a)=(b),(b)=(c))using namespace原创 2015-08-23 16:53:06 · 1879 阅读 · 0 评论 -
【排序算法】归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并操作的工作原理如下:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列设定两个指针,最初位置分别为两个已经排序序列的起始位置比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置原创 2015-06-23 12:12:09 · 1861 阅读 · 0 评论 -
【数据结构】串的堆分配表示与实现
采用堆分配存储表示的串被称为堆串,与顺序串相比,地址空间仍是连续,但空间是在程序执行时动态分配的。程序中会使用到的realloc函数://realloc : (void *)reelloc (void *ptr,unsigned newsize);//使用 : char *str;// str = (char *)realloc(str,20);原创 2015-05-22 18:36:38 · 7723 阅读 · 2 评论 -
算法数据结构 单链表的实现+操作 以及和顺序表的对比
顺序表和单链表的优缺点对比:顺序表的优点,无需为表示表中元素之间的逻辑关系而增加额外的存储空间;可以快速的存取表中的任意位置的元素。顺序表的缺点,插入后删除操作需要移动大量元素;当线性表长度不稳定时,存储空间难确定,容易造成存储空间碎片。对于单链表链式存储即元素存储的内存单元可以是不连续,分散的。对于元素间如何来维护他们的关系(即逻辑原创 2015-04-28 20:10:56 · 1467 阅读 · 0 评论 -
【数据结构】 栈实现 十进制到八进制的转化
1.利用栈的基本操作#include #include #include #define STACKSIZE 100 typedef int ElemType; typedef struct { ElemType stack[STACKSIZE]; int top; }SeqStack; void Conversion(int N)原创 2015-05-09 01:25:00 · 17162 阅读 · 0 评论 -
【数据结构 链表的应用】一元多项式相加及相乘 和对问题的分析
一元多项式相乘,需要将一个多项式的每一项的指数与另一个多项式的每一项的指数相乘。代码实现:头文件以及函数声明:#ifndef _POLYN_H #define _POLYN_H #include #include #include using namespace std;#define _CRT_SECURE_NO_DEPRECAT原创 2015-05-08 20:04:43 · 3372 阅读 · 0 评论 -
【数据结构】栈应用 行编辑器
在终端输入一串字符 当发现刚刚输入的字符有误,可以输入 # ,表示前一个字符无效;当想清除该行 则输入 @ 例如: ` 输入: hellow# 输出: hello 输入:hellow@ 输出: #ifndef原创 2015-05-09 12:01:28 · 2173 阅读 · 0 评论 -
【数据结构】栈的应用 括号匹配
括号配对问题:假设一个表达式中包含三种类型的括号:(),{ },【】,嵌套顺序任意{ 【()()】 }1 2 3 4 5 6 7 8引入“期待的急迫程度”概念,例如当接受第一个括号 { ,则它期待与第8个 } 匹配,然而当接受到第二个 【 时,此时【最期待和第七个 】 匹配。#ifndef _MATCH_H_#define _MATCH_H_#in原创 2015-05-09 11:46:08 · 1869 阅读 · 0 评论 -
算法数据结构 顺序表的实现+操作 及对产生问题的分析
线性表的顺序存储是将线性表中的元素存放在一组连续的存储单元中。使得在线性表中逻辑上相邻的元素在物理存储单元上也是连续的。采用顺序存储的线性表叫做顺序表。线性表的顺序存储结构如下:模块化设计:头文件 结构体和相应函数的定义,声明#ifndef _SEQLIST_H#define _SE原创 2015-04-22 17:14:58 · 1627 阅读 · 0 评论 -
最短路径(迪杰斯特拉算法)
#include//包含图文件及图的类型定义#include#include#includetypedef char VertexType[4];typedef char InfoPtr;typedef int VRType;#define INFINITY 100000//定义一个无限大的值#define MAXSIZE 100//最大顶点个数typedef原创 2015-01-22 11:06:13 · 1299 阅读 · 0 评论 -
hash table
const int P = 13;const int CAPCITY = 3;const int DEFAULT_VAL = -1;class myHash{public: typedef struct buck_node { int data[CAPCITY]; struct buck_node* next; }buck_node;原创 2016-04-06 10:10:44 · 414 阅读 · 0 评论