数据结构代码

2023-05-16

1.线性表

1.顺序表

typedef struct{
	int data[maxSize];
	int length;
}Sqlist; 

2.单链表

typedef struct LNode{
	int data;
	struct DLNode *next;
}LNode;

3.双链表

typedef struct DLNode{
	int data;
	struct DLNode *prior;
	struct DLNode *next;
}DLNode;

2.栈和队列

1.顺序栈

int stack[maxSize];
int top=-1;
进栈:stack[++top]=x;
出栈:x=stack[top--];
	

2.链栈

typedef struct LNode{
	int data;
	struct LNode *next;
}lst;
栈空: lst->next==NULL; 
进栈: p->next=lst->next; lst->next=p;
出栈: p=lst->next; x=p->data; lst->next=p->next; free(p);

3.顺序队列

typedef struct{
	int data[maxSize];
	int front,reat;
}SeQueue;
进队:qu.rear=(qu.rear+1)%maxsize; qu.data[qu.rear]=x;
出队:qu.front=(qu.front+1)%maxsize; x=qu.data[qu.front];
判空:qu.rear==qu.front; 

4.链队

typedef	struct QNode{
	int data;
	struct QNode *next;
}QNode;
typedef struct{
	QNode *front;
	QNode *rear;
}LiQueue;
队空:lqu->rear==NULL 或者 lqu->front==NULL
进队: lqu->rear->next=p;lqu->rear=p;
出队:p=lqu->front;lqu->front=p->next;x=p->data;free(p);

3.树与二叉树

1.二叉链表

typedef struct BTNode
{
	char data;
	struct BTNode *lchild;
	stryct BTNode *rchild;
}BTNode;

2.先序遍历

void preorder(BTNode *p)
{
	if(p!=NULL)
	{
		visit(p); //1.前
		preorder(p->lchild);
		//2.中
		preorder(p->rchild);
		//3.后
	}
}

3.中缀表达式求值问题

int comp(BTNode *p)
{
	int A,B;
	if(p!=NULL)	
	{
		if(p->lchild!=NULL&&p->rchild!=NULL)
		{
			A=comp(p->lchild);
			B=comp(p->rchild);
			return op(A,B,p->data);
		}
		else	return p->data-'0';
	}
	else return 0;
}

4.求二叉树的深度

int getDepth(BTNode *p)
{
	int LD,RD;
	if(!p)	return 0;
	else
	{
		LD=getDepth(p->lchild);
		RD=getDepth(p->rchild);
		return (LD>RD?LD:RD)+1;
	}
}

5.先序遍历第K个值

int n=0;
void trave(BTNode *p,int k)
{
	if(p!=NULL)
	{
		++n;
		if(k==n)	{cout<<p->data<<endl; return ;}
		trave(p->lchild,k);
		trave(p->rchild,k);
	}
}	

6.层序遍历

void level(BTNode *p)
{
	int front,rear;
	BTNode *que[maxSize];
	front=rear=0;
	BTNode *q;
	if(p!=NULL)
	{
		rear=(rear+1)%maxSize;
		que[rear]=p;
		while(front!=rear)
		{
			front=(front+1)%maxSize;
			q=que[front];
			visit(q);
			if(q->lchild!=NULL)	{rear=(rear+1)%maxSize;que[rear]=q->lchild;}
			if(q->rchild!=NULL)	{rear=(rear+1)%maxSize;que[rear]=q->rchild;}
		}
	}
}

7.先序非递归

void preorder(BTNode *bt)
{
	if(!bt)
	{
		BTNode *Stack[maxSize];
		int top=-1;
		BTNode *p;
		Stack[++top]=bt;
		while(top!=-1)
		{
			p=Stack[top--];
			visit(p);
			if(p->rchild!=NULL)	Stack[++top]=p->rchild;
			if(p->lchild!=NULL)	Stack[++top]=p->lchild;
		}
	}

8.中序非递归

1.根结点入栈
2.循环执行,若栈顶左存在,则左入栈;若不存在则输出栈顶并检查右,如右存在则右入栈
3.栈空时结束

9.后序非递归

void preorder(BTNode *bt)
{
	if(!bt)
	{
		BTNode *Stack1[maxSize]*Stack2[maxSize];
		int top1=-1,top2=-1;
		BTNode *p;
		Stack1[++top]=bt;
		while(top1!=-1)
		{
			p=Stack1[top--];
			Stack2[++top2];
			visit(p);
			if(p->lchild!=NULL)	Stack1[++top]=p->lchild;
			if(p->rchild!=NULL)	Stack1[++top]=p->rchild;
		}
	}
	while(top2!=-1)
	{
		p=Stack[top2--];
		visit(p);
	}
}

4.图

typedef struct
{
	int edges[maxSize][maxSize];
	int n,e;
	VertexType vex[maxSize];
}MGraph;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构代码 的相关文章

  • HDMI/DVI____串行发送器

    一 功能 xff1a 把10bit数据转化为串行数据在一个时钟周期全部输出 xff08 先输出高位 xff0c 再输出低位 xff09 二 框图 二 思路 对于TMDS编码器 xff0c 在每一个输入时钟周期 xff0c 输入一次数据到TM
  • keil添加新文件.c.h

    文章目录 添加文件到组中1 双击组名称2 点击快捷键 添加头文件路径 h1 点击魔术棒快捷键2 头文件加 添加文件到组中 1 双击组名称 双击组名称 xff0c 打开弹窗 xff0c 然后选择相应的组中的新文件 xff0c 在点击ADD 2
  • QT常用控件(二)——自定义控件封装

    引言 Qt已经提供了很多的基础控件供开发使用 xff0c 而Qt原生的控件有时候并不能满足我们的需求 xff0c 特别是在工业的运用上 xff0c 比如我们需要一个日期时间的选择器 xff0c Qt虽然已经提供了原生的QDateTime控件
  • STM32之串口通信USART模块学习(1)

    一 通信接口 通信的目的 xff1a 将一个设备的数据传送到另一个设备 xff0c 扩展硬件系统通信协议 xff1a 制定通信的规则 xff0c 通信双方按照协议规则进行数据收发 单端信号通信的双方必须要共地 xff0c 因为都是对GND的
  • 2019电赛总结(一)

    2019电赛总结 xff08 一 xff09 文章目录 2019电赛总结 xff08 一 xff09 4 那之前5 电赛初期6 电赛中期7 电赛强化练习8 电赛预热阶段8月初9 那以后 4 那之前 2019电赛总结 序 xff09 5 电赛
  • 统计从键盘输入的一行字符中小写字母,大写字母,数字字符和其它字符的个数。

    统计从键盘输入的一行字符中小写字母 xff0c 大写字母 xff0c 数字字符和其它字符的个数 C语言实现 vs 2019 span class token macro property span class token directive
  • c语言求1~10的阶乘和

    求1 43 2 43 3 43 43 10 的和 span class token macro property span class token directive keyword include span span class toke
  • C和Cpp区别

    1 输入 xff0c 输出不同 xff08 out xff0c put xff09 c语言 xff1a include lt stdio h gt scanf 34 d 34 amp a printf 34 a 61 d n 34 a cp
  • C++实现基于顺序搜索的动态分区分配算法

    目录 1 需求分析 2 代码实现 3 测试用例 4 总结与收获 1 需求分析 动态分区分配又称为可变分区分配 xff0c 他是根据进程的实际需要 xff0c 动态地为之分配内存空间 在实现动态分区分配时 xff0c 将涉及到分区分配中所有的
  • C语言实现TCP编程

    C语言实现TCP编程 1 主机字节序和网络字节序2 套接字的地址结构IP地址转化的方法 3 TCP的网络接口4 TCP服务器端的编程流程5 TCP客户端的编程流程6 运行结果 1 主机字节序和网络字节序 主机字节序 xff1a 不同的芯片
  • QT---用户登录注册案例实现

    用户登录 注册 span class token macro property span class token directive hash span span class token directive keyword include
  • C++中list详解

    list详解 list的介绍list函数说明成员类型构造函数元素访问迭代器容量修改器操作 vector和list区别总结vector和list的使用场景 仿写END xff01 96 在这里插入代码片 96 list的介绍 list是序列容
  • sip response 摘要认证

    详解摘要认证 1 什么是摘要认证 摘要认证与基础认证的工作原理很相似 xff0c 用户先发出一个没有认证证书的请求 xff0c Web服务器回复一个带有WWW Authenticate头的响应 xff0c 指明访问所请求的资源需要证书 但是
  • Prim算法实现最小生成树

    Prim算法实现最小生成树 1 最小生成树是什么2 最小生成树的用途3 Prim算法描述4 Prim算法演示最小生成树过程5 Prim算法实现END 1 最小生成树是什么 对连通图进行遍历 过程中所经过的边和顶点的组合可看做是一棵普通树 通
  • 哈夫曼树,哈夫曼编码及应用——(代码实现)

    哈夫曼树 xff0c 哈夫曼编码及应用 1 哈夫曼树1 1 什么是哈夫曼树 2 如何构造哈夫曼树 xff08 哈夫曼算法 xff09 2 1 举例实现哈夫曼树2 1 1手动实现具体步骤2 1 2代码实现具体步骤 3 哈夫曼编码3 1 什么是
  • 二叉排序树详解及实现

    二叉排序树详解及实现 1 什么是二叉排序树2 二叉排序树的数据结构2 1二叉排序树的节点类型2 2二叉排序树中插入某个元素2 3 二叉排序树中按值查找元素2 4 找排序二叉树中的最小值2 5返回排序二叉树中ptr中序遍历的后续节点2 6 寻
  • 平衡二叉树的一系列操作:删除、插入(在二叉排序树中插入新结点后,如何保持平衡)、调整平衡等等等

    平衡二叉树的插入 xff08 在二叉排序树中插入新结点后 xff0c 如何保持平衡 xff09 1 平衡二叉树的定义2 平衡二叉树的插入 xff08 调整最小不平衡子树A xff09 2 1LL xff08 在A的左孩子的左子树中插入导致不

随机推荐

  • 网络 UDP协议(C++|代码通过udp协议实现客户端与服务端之间的通信)

    这里写目录标题 udp通信编程各端的操作流程 xff1a 服务端操作流程 xff1a 客户端操作流程 xff1a 第2 3步与服务端不同 socket接口介绍udp客户服务端代码实现 推荐阅读 socket套接字编程就是在网络程序中编写代码
  • 网络 TCP协议(C++代码|通过tcp协议实现客户端与服务端之间的通信)

    目录 TCP通信编程各端的操作流程 xff1a 服务端操作流程 xff1a 客户端操作流程 xff1a 推荐先学习UDP协议在学习TCP协议 在UDP协议博客中讲解得更详细 xff0c 看懂UDP协议就很容易理解TCP了 网络 UDP协议
  • Matlab学习-箱型图绘制

    1 箱型图简介 xff1a 参考链接 xff1a boxplot函数用法详解 箱型图简介 箱型图主要包括的数据有 xff1a 最大值 最小值 上四分位数 下四分位数和中位数 xff0c 以及异常值 2 箱型图绘制 X span class
  • Matlab学习-CDF(累积分布函数图)绘制

    累积分布函数图绘制 参考链接 xff1a 1 Matlab官方说明 2 参考链接 3 属性设置 CDF xff1a 累积分布函数图 xff0c 顾名思义就是能够直观的反应某组数列分布的概率情况 xff0c 能够非常直观的反应误差精度大小 图
  • Matlab学习-频率分布直方图绘制

    参考链接 xff1a hist xff08 xff09 函数用法 频率分布直方图 xff1a 在数理统计中 xff0c 会经常使用到频率分布直方图 xff0c 能够直观的反应频率分布的范围大小 xff0c 在直角坐标系中 xff0c 横轴为
  • Matlab学习-经纬度在matlab内置地图显示

    已知经纬度坐标 xff0c 将其显示是地图上 参考链接 xff1a 使用matlab绘制世界地图并根据经纬度绘制点位 附m map的下载与安装说明 wm span class token operator 61 span webmap sp
  • ARM存储格式的“大小端”解析

    ARM储存 大端格式和小端格式 所谓的大端模式 xff0c 是指数据的高位 xff0c 保存在内存的低地址中 xff0c 而数据的低位 xff0c 保存在内存的高地址中 xff0c 这样的存储模式有点儿类似于把数据当作字符串顺序处理 xff
  • UBLOX板卡基础设置--F9P板卡配置(基准站和流动站)

    UBLOX F9P板卡配置 基准站 流动站 UBX F9P模块为双频定位芯片 xff0c 是市场上目前最常用的高精定位模块 xff0c 差分定位精度可达厘米级 xff0c 具体参数详见官方文档 官方文档下载链接 xff1a UBX F9P模
  • GIT学习-常用命令

    2 GIT学习 常用命令 在学习git前首先需要对相关名词和概念有基本了解 xff0c git基础知识学习可参考以下资料 xff1a git基础知识 xff1a GIT学习 1 基础知识git下载与配置 xff1a GIT学习 xff08
  • ROS常用命令

    ROS常用命令 1 将话题数据单独导出 将话题数据单独导出为一个文件 rostopic echo b name name p topic name gt save file name ex rostopic echo b test bag
  • Linux常用命令

    Linux常用命令 1 查看电脑IP地址 ifconfig 2 远程连接其他电脑 xff0c 查看是否连接成功 ping IP address 3 通过IP地址远程连接电脑 ssh lcl 64 IP address 4 文件传输 4 1
  • opencv-3.4.1-x86编译安装 -- 超详细

    相关链接 xff1a opencv 3 4 1 arm编译安装 超详细 opencv 3 4 1 x86编译安装 环境1 安装依赖库2 OpenCV源码获取与解压2 1 获取源码2 2 工作目录准备2 3 解压 3 OpenCV配置编译3
  • Qt编程之单例模式——代码复用,一个类供多个类调用

    什么是单例模式 单例模式是一种对象创建模式 xff0c 用于生产一个对象的实例 xff0c 它可以确保系统中一个类只产生一个实例 xff0c 这样做有两个好处 xff1a 1 对于频繁使用的对象 xff0c 可以省略创建对象所花费的时间 x
  • STM32串口数据接收处理,数据分割为整形浮点型数据。

    简介 通过stm32的串口接收数据 xff0c 通过strstr函数分割数据 xff0c 再将字符数据转化为整形数据或浮点数据 比如 xff1a stm32接收到数据 s555s xff0c 分割数据为 555 xff0c 然后转化为int
  • 抛出异常时将异常信息返给前端

    全局异常处理器负责将抛出的异常 xff0c 以统一的格式返给前端 在这里起主要作用的注解是 64 RestControllerAdvice 64 RestControllerAdvice主要配合 64 ExceptionHandler使用
  • 关于入栈和出栈的理解

    关于入栈和出栈的理解 xff1a 假设程序在运行 xff0c 这个时候就会涉及到下面要说到的几个核心的寄存器 xff08 对栈进行操作 xff09 就是PC寄存器 xff08 为了能够准确地记录各个线程正在执行的当前字节码指令地址 xff0
  • 原生 css 实现进度条

    方案一 xff1a 通过data控制它的样式 1 首先搭建dom结构 lt div class 61 34 home left top content div 34 v for 61 34 item index in PowerAAcces
  • 实现开发板、电脑(无线网卡)与虚拟机三者通过网络连接(三者都可以上外网)

    借鉴文章 xff1a https blog csdn net dongtaintailiang article details 106314689 spm 61 1001 2014 3001 5501 因为项目需要 xff0c 找到这篇文章
  • STM32串口发送接收数据

    目录 1 串口通信2 串口的结构体3 如何配置串口的发送4 通过串口向电脑发送ok字符5 封装发送字符串函数6 重定向printf串口发送7 串口输入控制LED灯开关遇到的问题 1 串口通信 我用的32是stm32f10x最小系统没有UAR
  • 数据结构代码

    1 线性表 1 顺序表 span class token keyword typedef span span class token keyword struct span span class token punctuation span