数据结构
文章平均质量分 79
feng_lilan
这个作者很懒,什么都没留下…
展开
-
实现广义表的各种基本运算算法
/*algo8-1.cpp*/#include #include typedef char ElemType;typedef struct lnode{ int tag;/*结点类型标识*/ union { ElemType data; struct lnode *sublist; }val; struct lnode *link;/*指向原创 2013-02-20 14:44:40 · 3805 阅读 · 0 评论 -
实现分块查找的算法
/*文件名:exp10-3.cpp*/#include #define MAXL 100 /*定义表中最多记录个数*/#define MAXI 20 /*定义索引表的最大长度*/typedef int KeyType;typedef char InfoType[10];typedef struct { KeyType key;原创 2013-01-29 14:25:26 · 2259 阅读 · 1 评论 -
实现二叉排序树的基本运算算法
/*exp10-4.cpp*/#include #include #define MaxSize 100typedef int KeyType;typedef char InfoType;/*定义关键字类型*/typedef struct node /*记录类型*/{ KeyType key;/*关键字项*/ InfoType data; /*其他数据域*/原创 2013-02-07 13:40:47 · 2812 阅读 · 0 评论 -
统计一个字符串中出现的字符及其次数
/*exp10-5.cpp*/#include #include #include #define MAXWORD 100typedef struct tnode{ char ch;/*字符*/ int count;/*出现次数*/ struct tnode *lchild,*rchild;}BTree;void CreaTree(BTree * &p,原创 2013-02-07 13:54:40 · 2625 阅读 · 0 评论 -
输出求解akm(2,1)的递推和求值过程
/*exp6-1.cpp*/#includeint count=1;int akm(int m,int n){ int g,f; printf("\t akm(%d,%d)",m,n); if(count++ % 3==0) printf("\n");/*每行输入3项*/ if(m==0) { printf("\t akm(%d,%d)=%d",0,n,n原创 2013-01-28 10:03:10 · 848 阅读 · 0 评论 -
求解n皇后问题
/*n皇后问题:在n*n方格棋盘上放置n个皇后,要求每个皇后不同行,不同列,不同左右对角线*//*exp6-2.cpp*/#include#includeconst int N=20;/*最多皇后个数*/int q[N];/*存放各皇后所在的行号*/int count=0;/*存放解个数*/void print(int n)/*输出一个解*/{ count++;原创 2013-01-28 10:31:35 · 853 阅读 · 0 评论 -
!采用递归和非递归方法求解F(n)
/*文件名:exp6-4.cpp*/#include #define MaxSize 100int fun1(int n){ int f; if (n==0) return(1); else { f=fun1(n/2); return(n*f); }}int fun2(int n)原创 2013-01-28 12:34:02 · 847 阅读 · 0 评论 -
求5X5阶螺旋方阵
/*ex[5-1.cpp*/#include#define MaxLen 10void fun(int a[MaxLen][MaxLen],int n){ int i,j,k=0,m; if(n%2==0) m=n/2; else m=n/2+1; for(i=0;i { for(j=i;j { k++; a[i][j]=原创 2013-01-27 15:27:02 · 1465 阅读 · 0 评论 -
!实现稀疏矩阵(采用三元组表示)的基本运算
/*exp5-4.cpp*/#include#define N 4typedef int ElemType;#define MaxSize 100/*矩阵非零元素最多个数*/typedef struct{ int r;/*行号*/ int c;/*列号*/ ElemType d;/*元素值*/}TupNode;/*三元组定义*/typedef struc原创 2013-01-28 09:23:55 · 6749 阅读 · 0 评论 -
求一个串中出现的第一个最长重复子串
/*exp4-5.cpp*/#include#include#include#define MaxSize 100typedef struct{ char ch[MaxSize]; int len;/*串长*/}SqString;extern void StrAssign(SqString &str,char cstr[]);/*在algo4-1.cpp文件原创 2013-01-27 15:24:02 · 1728 阅读 · 0 评论 -
文本串加密和解密程序
/*exp4-4.cpp*/#include#include#define MaxSize 100typedef struct{ char ch[MaxSize]; int len;/*串长*/}SqString;extern void StrAssign(SqString &str,char cstr[]);extern void DispStr(SqSt原创 2013-01-27 15:22:44 · 2767 阅读 · 0 评论 -
!顺序串的各种模式匹配运算
/*exp4-3.cpp*/#include#include#define MaxSize 100typedef struct{ char ch[MaxSize];/*定义可容纳MaxSize个字符的空间*/ int len;/*标记当前实际串长*/}SqString;extern void StrAssign(SqString &str,char cstr[]原创 2013-01-27 15:20:58 · 1643 阅读 · 0 评论 -
实现顺序查找的算法
/*exp10-1.cpp*/#include #define MAXL 100/*定义表中最多记录个数*/typedef int KeyType;typedef char InfoType[10];typedef struct{ KeyType key;/*KeyType为关键字的数据类型*/ InfoType data;/*其他数据*/}NodeType;原创 2013-01-28 20:15:16 · 1002 阅读 · 0 评论 -
!用二叉树来表示代数表达式
/*exp7-7.cpp*/#include #include #include #define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data;/*数据元素*/ struct node *lchild;/*指向左孩子*/ struct node *rchild;/*指向原创 2013-02-06 11:19:50 · 2982 阅读 · 0 评论 -
实现直接插入排序算法
/*exp11-1.cpp*/#include #define MAXE 20/*线性表中最多元素个数*/typedef int KeyType;typedef char InfoType[10];typedef struct{ KeyType key;/*记录类型*/ InfoType data;/*其他数据项,类型为InfoType*/}RecType;原创 2013-02-07 14:40:45 · 1218 阅读 · 0 评论 -
实现希尔插入排序算法
/*exp11-2*/#include #define MAXE 20/*线性表中最多元素个数*/typedef int KeyType;typedef char InfoType[10];typedef struct{ KeyType key;/*记录类型*/ InfoType data;/*其他数据项,类型为InfoType*/}RecType;void原创 2013-02-11 14:46:27 · 744 阅读 · 0 评论 -
实现冒泡排序算法
/*exp11-3*/#include #define MAXE 20 /*线性表中最多元素个数*/typedef int KeyType;typedef char InfoType[10];typedef struct /*记录类型*/{ KeyType key;/*关键字项*/ InfoType data;/*其他数据项,类型为InfoType*/}RecT原创 2013-02-11 15:05:02 · 531 阅读 · 0 评论 -
实现直接选择排序算法
/*exp1-5.cpp*/#include #define MAXE 20/*线性表中最多元素个数*/typedef int KeyType;typedef char InfoType[10];typedef struct/*记录型*/{ KeyType key;/*关键字项*/ InfoType data;/*其他数据项,类型为InfoType*/}RecT原创 2013-02-12 13:01:30 · 584 阅读 · 0 评论 -
实现二路归并排序算法
/*exp11-7.cpp*/#include #include #define MAXE 20/*线性表中最多元素个数*/typedef int KeyType;typedef char InfoType[10];typedef struct/*记录类型*/{ KeyType key;/*关键字项*/ InfoType data;/*其他数据项,类型为Info原创 2013-02-15 13:47:49 · 1239 阅读 · 0 评论 -
实现基数排序算法
/*exp11-8.cpp*/#include #include #include #define MAXE 20/*线性表中最多元素个数*/#define MAXR 10/*基数的最大取值*/#define MAXD 8/*关键字倍数的最大取值*/typedef struct node{ char data[MAXD];/*记录的关键字定义的字符串*/ s原创 2013-02-15 16:02:15 · 580 阅读 · 0 评论 -
实现英文单词按字典序排列的基数排序算法
/*exp11-10.cpp*/#include #include #include #define MaxLen 9/*单词的最大长度*/#define Radix 27/*基数Radix为27,分别对应'','a',...'z'*/typedef char String[MaxLen+1];/*定义String为字符数组类型*/typedef struct node原创 2013-02-17 12:38:12 · 4931 阅读 · 0 评论 -
由遍历序列构造二叉树
/*exp7-4.cpp*/#include#include#define MaxSize 100#define MaxWidth 40typedef char ElemType;typedef struct node{ ElemType data;/*数据元素*/ struct node *lchild;/*指向左孩子*/ struct node *rch原创 2013-02-05 16:09:36 · 946 阅读 · 0 评论 -
!求二叉树中从根结点到叶子结点的路径
/*exp7-3.cpp*/#include#include#define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data;/*数据元素*/ struct node *lchild;/*指向左孩子*/ struct node *rchild;/*指向右孩子*/}BTNod原创 2013-02-05 15:13:24 · 3525 阅读 · 0 评论 -
实现二叉树各种基本运算的算法
/*文件名:algo7-1.cpp*/#include #include #define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data; /*数据元素*/ struct node *lchild; /*指向左孩子*/ struct node *rchild; /*原创 2013-02-01 20:11:14 · 2586 阅读 · 0 评论 -
构造哈夫曼树
/*exp7-6.cpp*/#include #include #define N 50/*叶子结点数*/#define M 2*N-1/*树中结点总数*/typedef struct{ char data[5];/*结点数*/ int weight;/*权重*/ int parent;/*双亲结点*/ int lchild;/*左孩子结点*/ int原创 2013-02-06 10:59:25 · 1107 阅读 · 0 评论 -
!实现链串各种基本运算的算法
/*algo4-2.cpp*/#include#includetypedef struct snode{ char data; struct snode *next;}LiString;void StrAssign(LiString * &s,char t[]){ int i; LiString *r,*p; s=(LiString *)malloc原创 2013-01-27 15:19:21 · 1917 阅读 · 0 评论 -
实现顺序串各种基本运算的算法
/*algo4-1.cpp*/#include#define MaxSize 100/*最多的字符个数*/typedef struct{ char ch[MaxSize];/*定义可容纳MaxSize个字符的空间*/ int len;/*标记当前实际串长*/}SqString;void StrAssign(SqString &str,char cstr[])/*由串原创 2013-01-27 15:15:49 · 5117 阅读 · 0 评论 -
求素数
#include #include int prime(int x) /*判断正整数x是否为素数*/{ int i; for (i=2;i if (x%i==0) return 0; /*若x不是素数,则退出并返回0*/ return 1;}void main(){ int n,i,j=0;原创 2013-01-27 13:56:15 · 355 阅读 · 0 评论 -
实现广义表的相关运算算法(一)
/*exp8-3.cpp*/#include #include typedef char ElemType;typedef struct lnode{ int tag;/*结点类型标识*/ union { ElemType data; struct lnode *sublist; }val; struct lnode *link;/*指向下一个元原创 2013-02-21 11:15:00 · 956 阅读 · 0 评论 -
求一个正整数的各位数字之和
#include int func(int num) /*分解num的各位数字,返回其和*/{ int s=0; do { s+=num%10; /*累计各位数字之和*/ num/=10; /*求下一数值位*/ }while(num); return(s);}void main(){ int n; printf("\n");原创 2013-01-27 14:32:50 · 4699 阅读 · 0 评论 -
实现广义表求表头和表尾的运算
/*algo8-2.cpp*/#include #include typedef char ElemType;typedef struct lnode{ int tag;/*结点类型标识*/ union { ElemType data; struct lnode *sublist; }val; struct lnode *link;/*指向下一个原创 2013-02-20 15:18:13 · 6839 阅读 · 2 评论 -
实现中序线索化二叉树
/*exp7-5.cpp*/#include#include#define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data; int ltag,rtag;/*增加的线索标记*/ struct node *lchild; struct node *rchild;}TBT原创 2013-02-05 16:48:51 · 850 阅读 · 0 评论 -
实现二叉树各种遍历算法
/*exp7-2.cpp*/#include#include#define MaxSize 100typedef char ElemType;typedef struct node{ ElemType data;/*数据元素*/ struct node *lchild;/*指向左孩子*/ struct node *rchild;/*指向右孩子*/}BTNod原创 2013-02-05 14:12:18 · 1269 阅读 · 0 评论 -
实现二分查找的算法
/*exp10-2*/#include#define MAXL 100typedef int KeyType;typedef char InfoType[10];typedef struct { KeyType key;/*KeyType为关键字的数据类型*/ InfoType data;/*其他数据*/}NodeType;typedef NodeType原创 2013-01-28 20:43:49 · 876 阅读 · 0 评论 -
求解背包问题
/*背包问题:设有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的方案,使选中物品的总重量不超过指定的限制重量,便选中的物品的价值之和为最大*//*第i件物品的选择有两种可能:(1)物品i被选择,这种可能性仅当包含它不会超过方案总重量的限制时才是可行的。选中后,继续递归去考虑其余物品的选择(2)物品i不被选择,这种可能性仅当不包含物品i也有可能找到价值更大的方案的情况原创 2013-01-28 11:37:21 · 876 阅读 · 0 评论 -
求一个矩阵的马鞍点
/*exp5-2.cpp*/#include#define M 4#define N 4void MinMax(int A[M][N]){ int i,j,have=0; int min[M],max[N]; for(i=0;i { min[i]=A[i][0]; for(j=0;j if(A[i][j] min[i]=A[i][j原创 2013-01-28 09:20:27 · 2177 阅读 · 0 评论 -
求两个对称矩阵之和与乘积
/*exp5-3.cpp*/#include#define n 4#define m 10int value(int a[],int i,int j)/*返回压缩存储a中A[i][j]之值*/{ if(i>=j) return a[i*(i-1)/2+j]; else return a[j*(j-1)/2+i];}void madd(int a[],原创 2013-01-28 09:22:20 · 7330 阅读 · 0 评论 -
实现双链表的各种基本运算的算法
/*algo2-3.cpp*/#include#includetypedef char ElemType;typedef struct DNode /*定义双链表结点类型*/{ ElemType data; struct DNode * prior;/*指向前驱结点*/ struct DNode * next;/*指向后继结点*/}DLinkList;voi原创 2013-01-27 14:49:32 · 5452 阅读 · 0 评论 -
判断一个字符串是否为回文
#include#include#define MAX 100 /*字符串的最大长度*/int func(char s[]){ int flag=1; int i,j,slen=strlen(s);/*slen为字符串s的长度*/ for(i=0,j=slen-1;i if(s[i]!=s[j]) { flag=0;原创 2013-01-27 13:54:28 · 743 阅读 · 0 评论 -
!求两个多项式相加运算
/*exp2-7.cpp*/#include#include#define MAX 20/*多项式最多项数*/typedef struct /*定义存放多项式的数组类型*/{ float coef;/*系数*/ int exp;/*指数*/}PolyArray[MAX];typedef struct pnode/*定义单链表结点类型*/{ float c原创 2013-01-27 14:58:21 · 1664 阅读 · 0 评论