数据结构学习
文章平均质量分 92
何以琛hhhh
这个作者很懒,什么都没留下…
展开
-
内部排序之基数排序
1. MSD(Most Significant Digit First)排序准则对记录按关键字组(K0, K1, K2, … , Kd-1)进行排序时,先按K0排序,使K0相同的记录排列在一起,然后对K0相同的每个子序列按K1排序,使K0相同的每个子序列进一步细分为K1相同的若干个更小的子序列,如此重复,直至Kd-1排序结束。基于MSD准则的排序等效于按照关键字组比较大小的定义直接对关键字组比较大小来实现排序,即只需要定义如下关键字组比较大小的函数即可实现MSD准则排序。一个例子(比较时间的大小)定义原创 2021-02-04 18:01:48 · 598 阅读 · 0 评论 -
关于二叉树的一些基本算法
1.求树高int height(BiT bt){ int hl,hr; if(bt==NULL)return 0; hl=height(bt->lchild); hr=height(bt->rchild); return (hl>hr?hl:hr)+1;}2.求树中(出)度为1的结点数目int f(BiT bt){ int nl,nr; if(bt==NULL)return 0; nl=f(bt->lchild); nr=f(bt->rchild原创 2020-11-15 23:31:50 · 838 阅读 · 0 评论 -
求二叉树某结点在先序、中序、后序遍历中的访问次序
#include<stdio.h>#include<stdlib.h>typedef struct node{ char data; struct node *lchild,*rchild;}*BiT,BiTNode;void main(){ BiT create_BT(); void PreorderSearch_BT(BiT bt,char e,int &k); void MidorderSearch_BT(BiT bt,char e,int &am原创 2020-11-14 09:36:51 · 483 阅读 · 0 评论 -
中缀式求值以及将中缀式改写为后缀式
中缀表达式求值#include <stdio.h>#include<stdlib.h>void main(){ int isp(char ch); int icp(char ch); int isOperator(char ch); int compute(int a,char ch,int b); int OPND[5];int top1=-1; char OPTR[5];int top2=-1; OPTR[++top2]='#';//将‘#’入栈 cha原创 2020-11-06 15:41:31 · 110 阅读 · 0 评论 -
基于压缩存储的半三角矩阵乘法运算的实现
#include<stdio.h>#include<stdlib.h>void main(){ int off(int i,int j);//偏移量函数off的函数声明 int i,j,s,n;int *pa,*pb,*pc; printf("请输入矩阵的阶数n="); scanf("%d",&n); pa=(int *)malloc(sizeof(int)*n*(n+1)/2); pb=(int *)malloc(sizeof(int)*n*(n+1)/2原创 2020-11-06 15:31:33 · 294 阅读 · 0 评论 -
串的模式匹配算法
一、BF(brute force)算法#include<stdio.h>void main(){ char s[]="abcdabcdaaabbbccc"; char t[]="aaabbb";//设定s为主串,t为模式(子串) int i=0,j=0; while(s[i]&&t[j])//当s,t中任一一个字符串空时结束循环 if(s[i]==t[j])//当前项s[i],t[j]匹配成功时,自动匹配下一个 { i++; j++; }原创 2020-10-17 14:47:00 · 652 阅读 · 0 评论 -
栈消递归的几个例子
//用堆栈的方式求组合数#include <stdio.h>#include<stdlib.h>typedef struct{ int *elem; int max_size;//栈的容量 int top;//栈顶指针}SqStack;void main(){ void Creat_Stack(SqStack &S,int n); void pop(SqStack &S,int &e); void push(SqStack &am原创 2020-10-16 14:34:49 · 491 阅读 · 0 评论 -
基于链表的多项式乘法
#include<stdio.h>#include<stdlib.h>/************************************************************************/typedef struct polynode{//定义一个结构体表示多项式的一项 double c;//系数 int e;//指数 struct polynode *next;//要求结点按指数e升序连接}PNode,*Polyn;/*****原创 2020-10-15 19:36:41 · 581 阅读 · 0 评论 -
循环队列的基本算法
#include<stdio.h>#include<stdlib.h>typedef struct{//建立一个结构体 char *elem; int max_size;//队列最大容量 int f;//队头指针 int r;//队尾指针}SqQueue;void main(){ void init(SqQueue &q,int n);//初始化队列的函数声明 void enQueue(SqQueue &q,char e);//入队的函数声明原创 2020-10-15 16:40:55 · 1069 阅读 · 0 评论 -
线性表基本操作算法
//通过顺序表实现#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 10;typedef struct{//建立一个结构体 int *elem; int n;//顺序表的实际长度 int max_size;//顺序表的最大长度}SqList;void main(){ void Create_SqList(SqList &L);//建立一个顺序表的函数声明 void Insert_SqList(S原创 2020-10-15 16:39:35 · 737 阅读 · 0 评论 -
基于循环队列的排队买票模拟程序
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct { char ch[10];}string;typedef struct{ string *s; int max_size; int f; int r;}SqQueue;void main(){ void init(SqQueue &q,int n); int empty(SqQueue &am原创 2020-10-15 16:36:36 · 784 阅读 · 2 评论