数据结构
文章平均质量分 59
LucienDuan
这个作者很懒,什么都没留下…
展开
-
栈应用 表达式求值
#include#include#define LENGTH 100 //初始分配栈的长度#define ADD_LEN 10 //栈长增量typedef struct //定义字符栈{ int *base; int *top; int stacksize;}SqStack;void InitStack(SqStack &S); //初始化一原创 2014-08-01 11:00:48 · 1392 阅读 · 0 评论 -
循环队列 队列的顺序表示和实现
#include#include#define MAXQSIZE 100typedef struct//构造循环队列数据类型{ int *base;//队列数组指针 int front; int rear;}CircleQueue;void InitQueue(CircleQueue &Q);//初始化创造循环队表void QueueLength(CircleQueue Q);/原创 2014-08-01 11:11:19 · 986 阅读 · 0 评论 -
顶点间最短路径求解
#include#define INFINITY 100 //表示∞#define MAX_VERTEX_NUM 20 //最大顶点个数typedef enum {DG,DN,UDG,UDN} GraphKind;//图的种类typedef struct//邻接矩阵{ int adj; //表示权值 char *info; //与弧相关信息的指针}AdjMatrix[MAX_VER原创 2014-08-01 11:06:20 · 1153 阅读 · 0 评论 -
AVL树(平衡二叉查找树)
1、AVL树的定义平衡二叉查找树,又称作AVL树(以提出此树的两人人名命名的),AVL树是一种高度平衡的二叉查找树,它或者是一颗空树,或者是具有下列性质的二叉查找树:(1)它的左子树和右子树都是平衡二叉查找树(2)它的左子树和右子树的深度差的绝对值不超过1将二叉树上的节点的左子树的深度减去右子树的深度的值定义为节点的平衡因子,因此平衡因子的值只可能是:-1、0 和 1。原创 2014-09-13 20:47:39 · 1499 阅读 · 0 评论 -
栈的基本操作 出栈与入栈
#include#include#define LENGTH 100 //初始分配栈的长度#define ADD_LEN 10 //栈长增量typedef struct {//构造栈的数据类型 int *base; int *top; int stacksize;}SqStack;void CreateStack(SqStack &S);//初始化一个栈void PushS原创 2014-08-01 11:02:53 · 5087 阅读 · 0 评论 -
数据结构 串的堆分配
#include#includetypedef struct{ char *ch; int length;}HString;void StrAssign(HString &T,char *chars);void StrLength(HString S);void StrCompare(HString S,HString T);void ClearString(HString &S原创 2014-08-01 11:01:32 · 1421 阅读 · 0 评论 -
队列基本操作 出队与入队
#include#includetypedef struct QNode{ //构造结点类型 int data; struct QNode *next;}*QueuePtr;typedef struct { QueuePtr front; QueuePtr rear;}LinkQueue;void CreateQueue(LinkQueue &Q);//创建队列void E原创 2014-08-01 10:59:35 · 3058 阅读 · 0 评论 -
循环链表 约瑟夫环问题实现
#include#includetypedef struct LNode{//构造结点类型 int data; struct LNode *next;}*LinkList;void CreateList(LinkList &L,int n);//创造一个循环链表void OutList(LinkList &L,int m);//数到m出列,并释放该结点void main()//主原创 2014-08-01 11:12:14 · 1011 阅读 · 0 评论 -
广义表建树算法
void CreateBiTree(BiTree &T){//用广义表来创建并输入二叉树 int k; char ch; BiTNode p,q; SqStack S; CreateStack(S); if(!(T=(BiTree)malloc(sizeof(BiTNode)))) { printf("ERROR!\n"); return; } T->data=0; T原创 2014-08-01 11:05:38 · 2276 阅读 · 0 评论 -
赫夫曼树编码及解码
#include#includetypedef struct{ char content; int weight; int parent,lchild,rchild;}HTNode,*HuffmanTree;//动态分配数组存储赫夫曼树typedef int **HuffmanCode;//动态分配数组存储赫夫曼编码表void HuffmanCoding(HuffmanTree原创 2014-08-01 11:06:38 · 2112 阅读 · 0 评论 -
单链表的插入与删除
#include#includetypedef struct LNode//构造结点类型{ int data; struct LNode *next;}*LinkList;void InitList(LinkList &L,int len);//创建链表void InsertList(LinkList &L,int i,int e);//插入元素void DeleteList(Li原创 2014-08-01 11:05:01 · 1796 阅读 · 0 评论 -
二叉树的基本操作及遍历
#include#include#define LENGTH 100 //初始分配栈的长度#define ADD_LEN 10 //栈长增量typedef struct BiTNode{//构造二叉树结点类型 char data; struct BiTNode *LChild,*RChild;}BiTNode, *BiTree;typedef struct {//构造栈的数据类原创 2014-08-01 11:04:43 · 1404 阅读 · 0 评论 -
基础数据结构 链表、栈、队列
数据结构是程序设计中一个非常重要的部分,基本的数据结构包括链表、栈和队列,当然高级一点的还有树、图等,实际上链表、栈和队列都是线性表,只是在操作和表示方式上有所不同,线性表用顺序结构表示就是顺序表,用链结构表示就是链表,如果对线性表的操作加以限制,只能有在表尾进行插入和删除元素,这就变成栈了,如果只能允许元素从表尾插入,表头删除,这就变成队列了。链表/* * 数据结构 链表 *原创 2014-08-24 19:15:44 · 1906 阅读 · 1 评论 -
无栈非递归求赫夫曼编码算法
//-----------无栈非递归遍历赫夫曼树,求赫夫曼编码---------------- HC=(HuffmanCode)malloc((n+1)*sizeof(char *)); p=m; cdlen=0; for(i=1;i<=m;++i) HT[i].weight=0; while(p) { if(HT[p].weight==0) { HT[p].weight==1原创 2014-08-01 11:07:50 · 2819 阅读 · 0 评论 -
模式匹配 KMP算法中Next值求解
#include#include#includetypedef struct{ char *ch; int length;}HString;void StrAssign(HString &T,char chars[]);int get_next(HString T,int next[]);void main(){ HString T; char chars[80]; in原创 2014-08-01 10:59:44 · 1830 阅读 · 0 评论 -
模式匹配 KMP算法详解
/* * KMP 模式匹配算法 */#include #include using namespace std;/* * 计算模式串的next数组 * 模式串既做主串,又做模式串,进行匹配 * 时间复杂度为O(m),m为模式串的长度 */void countNext(char* strPattern, int len, int* next){ int i = 0, j原创 2014-08-25 16:48:13 · 1215 阅读 · 0 评论