自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 数据结构之线性表(链表实现)

首先,我们需要定义链表中的节点结构。每个节点包含两个部分:存储的数据(类型为T)和指向下一个节点的指针。// 链表节点public:// 存储的数据T data;// 指向下一个节点public:// 默认构造函数// 拷贝构造函数// 带参数构造函数使用链表实现的线性表是一种常见的数据结构,它通过链式存储方式来存储元素,每个元素都包含一个指向下一个元素的指针。相比于使用数组实现的线性表,链表在插入和删除操作上更加灵活,因为它们只需要更改相邻元素的指针即可,而不需要移动元素。

2024-03-22 15:15:26 498

原创 线性表——数组描述习题

数据结构、算法与应用C++语言描述 课后习题解答

2024-03-21 11:23:49 204

原创 数据结构之线性表(数组实现)

为了符合数据结构的核心思想,个人认为需要按照 ADT 来实现数据结构,ADT 就是抽象的数据结构,这个可以避免语言限制,更加通用描述了数据结构,不再被限制只能使用特定语言来实现数据结构(以后的有关数据结构的文章都是按照 ADT 来实现),下面将展示一下关于线性表的 ADT。下面是使用 C++ 来实现 ADT,使用了纯虚类,目的就是为了和 ADT 定义的一致,**关于 clear 的实现,这里实现只是把所有元素清楚,但是内存依然在,不知道这样是否合理,如有不合理的地方可以探讨一下。需要的头文件如下所示。

2024-03-15 10:39:02 572 2

原创 从零开始简单 3D 光栅化之改造框架

由于使用了 Qt,不知道怎么新建筛选器,所以代码有组织有些乱。ishader 作为着色器,vertex shader,fragment shader 等等。canvas 只是封装了一下 QImage,为了适合自己定义的 color 来工作的。mianwindow 也是创建项目自带的。renderdata 渲染需要的数据结构。simpleshader 简单的着色器。mathdefs 常用的数学函数。color 是为了跨平台用的。main 创建项目自带的。model 抛弃的模块。matrix4 矩阵。...

2022-08-13 21:53:53 222

原创 从零开始简单 3D 光栅化之画点

使我们得以在Qt的窗口中展示一幅图像。上一节的画个点太麻烦了。之前先要封装一个自己的颜色。不废话了,实现颜色类。本人才疏学浅,有什么错误欢迎指出。如果没有问题应该可以显示一个点。往后画什么东西就可以使用。这个函数,因为看着简洁。封装成适合我们使用的像素操作。就提供了像素级操作的方法。在这之前先添加一个封装好的。在构造函数中添加一点东西。颜色类的头文件实现如下。这个比较简单,就不在。......

2022-07-28 10:17:25 279

原创 从零开始简单 3D 光栅化之环境配置

从零开始简单 3D 光栅化之环境配置

2022-07-26 20:24:16 242

原创 光栅化从零开始

使用 C++ 实现一个简单的光栅化

2022-07-26 12:44:36 238

原创 软光栅所使用的向量

向量详解学习层次几何意义 -> 算术意义 -> 应用 -> 代码什么是向量对于物理系的视角:向量是指向空间的箭头。向量具有大小和方向。计算机专业的视角:向量是数组数组,有序的列表。数学专业视角:两个向量相加用一个常数和另一个向量相乘向量在坐标系中的有箭头的线段,他的末端总是在原点,在二维空间中,向量 [ij]\begin{bmatrix}{i}\\{j}\end{bmatrix}[ij​] 的第一个数字 iii 是尖端落在 x 轴上面的长度

2021-11-16 18:02:35 292

原创 3D 软光栅导学

3D 软光栅导学3D 渲染管线流程3D 渲染管线流程应用阶段应用阶段在 CPU 处理,处理成 3D 顶点(顶点坐标,法向量,纹理坐标,颜色(可以不需要))。渲染管线顶点着色器图元装配几何着色器光栅化片段着色器测试与混合3D 软光栅流程准备好顶点数据和图元类型(三角形▶️)顶点着色器对顶点进行处理,使用矩阵向量方式处理。目的需要将模型顶点转成世界坐标,计算纹理坐标,顶点颜色,法向量需要存储在一个数据结构里面模型坐标是建模的时候的坐标坐标怎么转成世界坐标,其实就是坐

2021-09-29 12:38:40 181

原创 OpenGL 编程指南 ( 原书第 9 版 ) --- 第二章

着色器程序简介目标:区分 OpenGL 创建图像所用的不同类型的着色器。使用 OpenGL 着色语言构建和编译着色器。使用 OpenGL 中提供的多种机制将数据传入着色器。使用高级 GLSL 着色技巧来创建可复用性更强的着色器。介绍:OpenGL 的可编程管线可编程管线流程:顶点着色阶段(顶点着色器)》细分阶段(细分控制着色器和细分赋值着色器)》几何阶段(几何着色器)==》 片段着色器。粗体的是必须需要的。其余的是可以选择配置的。下面具体介绍每一个阶段都做了什么事情:

2021-07-20 15:36:37 233

原创 OpenGL 编程指南 ( 原书第 9 版 ) --- 第一章

第一章 OpenGL 概述OpenGL 流程:顶点数据 ==》顶点着色器 ==》图元装配 ==》光栅化 ==》 片段着色器 ==》混合测试 ==》输出到屏幕。顶点数据可以看成应用程序阶段,顶点数据可以是,模型(model),一个三维场景 (Scene)。从顶点数据到顶点着色器包括了数据怎么发送到 GPU 的内存,需要向 OpenGL 解释数据的内存布局,比如代表顶点,向量,颜色等等的数据需要在应用程序阶段解释给 OpenGL 。方便 OpenGL 去执行,到顶点着色器。顶点着色器输出的数据给到图元装配

2021-07-20 15:34:21 700

原创 你好,三角形(Hello Triangle)

#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>/** 用户改变窗口的大小的时候,视口也应该被调整。* 我们可以对窗口注册一个回调函数(Callback Function),它会在每次窗口大小被调整的时候被调用。*/void framebuffer_size_callback(GLFWwindow* window, int width, int height);void

2021-06-30 17:37:25 237

原创 OpenGL 第一个小程序

1.0 开启万恶的 OpenGL 编程之路 :) 。没有环境参考博客:)。1.0.1 OpenGL 是一个规范,不是一份代码可以直接运行的,显卡厂商会实现 OpenGL 的规范,接口(interface)。so AMD or NVIDIA 都会去实现 OpenGL。1.0.2 OpenGL 有很多版本,所以编程需要设置主版本号和次版本号。1.0.3OpenGL自身是一个状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。OpenGL的状态通常被称为Op...

2020-12-28 17:51:09 364

原创 OpenGL 配置环境

1.0 先更新显卡驱动,使用的 OpenGL 版本是:(3.3.x),这个很重重要,由于显卡驱动的版本问题,这个将来编程需要设置主版本号和次版本号。牢记牢记。2.0 使用Visual Studio 2015 Enterprise 。有实力可以支持正版,或者用 Visual Studio Community 2015。3.0OpenGL 环境配置可以参考博文:(OpenGL的运行环境配置)。4.0 完结撒花 *★,°*:.☆( ̄▽ ̄)/$:*.°★* 。...

2020-12-28 17:29:35 308

原创 邻接链表实现图的存储

1.0 头文件#pragma once/** 邻接矩阵实现图的存储*/// 图的最大顶点数const int MAX_VERTEX = 10;typedef int DataType;// 边矩阵节点struct ALAdjustNode{ // 顶点序号 int vertxNumber; // 边的权值 int right; // 边矩阵下一个节点的地址 struct ALAdjustNode* next;};// 邻接数组struct ALVertex

2020-12-28 17:15:10 382

原创 邻接矩阵实现图的存储

1.0 头文件#pragma once/** 邻接矩阵存储图*/// 图的最大顶点数const int MAX_VERTEX = 10;typedef int DataType;class MGraph{private: // 存储顶点数据 DataType vertex[MAX_VERTEX]; // 存储邻接矩阵的 int arc[MAX_VERTEX][MAX_VERTEX]; // 邻接矩阵的顶点数和边数目 int vertexNum; int arc

2020-12-28 17:11:42 585

原创 链式栈

1.0 头文件#pragma oncetypedef int elemType;// 链式栈 的一个元素typedef struct LinkStatckNode{ elemType data; struct LinkStatckNode* nextNode;}LinkStatckNode,*LinkStatckNodePtr;// 栈的结构体typedef struct LinkStatckPtr{ // 栈顶指针 LinkStatckNodePtr top; //

2020-11-29 22:55:08 153

原创 实现静态栈使用数组实现

静态栈说明: 为什么要使用数组来定义一个栈,主要是为了 leetcode 上面的题目减少内存的。链式栈也可以用,具体思路使用一个预先设定好的数组,栈底就是:a[0],剩下的操作只需要维护一个 index 就可以实现栈。注意事项:如果你使用的是 mac Xcode 10 测试代码,选择 C 语言。则需要添加一个头文件#include<stdbool.h>。是使用 C 语言开发的。栈的头文件:StaticStack.h#pragma once// 数组实现栈// 数据元..

2020-11-26 00:04:26 139

原创 暴力匹配串算法(BF)

1.0 暴力匹配串算法思想: 两个指针移动匹配,关键是指针回溯,每次回溯一个位置。// 暴力匹配算法int bfString(char* str, char* matchStr){ // 匹配的位置 int pos = -1; // str 串的长度 int len1 = strlen(str); // matchStr 串的长度 int len2 = strlen(matchStr); // 指向 str 的指针 int pointStr = 0; // 指向 matchStr

2020-11-12 14:22:48 208

原创 C语言数据结构串的匹配(BF模式)

// 暴力匹配算法int bfString(char* str, char* matchStr){ // 匹配的位置 int pos = -1; // str 串的长度 int len1 = strlen(str); // matchStr 串的长度 int len2 = strlen(matchStr); // 指向 str 的指针 int pointStr = 0; // 指向 matchStr 的指针 int pointMatchStr = 0; while (len1 .

2020-11-12 14:18:08 298

原创 C语言数据结构实现链式队列

1.0 头文件(Queue.h)#pragma once#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0// 状态码typedef int status;typedef int elemType;typedef struct QueueNode{ // 存储数据 elemType data; // 下一个节点 struct QueueNode* next;}QueueNode;typedef st

2020-11-11 20:18:30 179

原创 leetcode 150. 逆波兰表达式求值

逆波兰表达式求值150. 逆波兰表达式求值思路:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算.#include <stdio.h>#include <string.h>#include <stdlib.h>// 函数执行状态码#define OK 0#define ERROR 1// 状态码typedef int status;// 数据类型typedef int elemType;// 定义存储结构typedef ..

2020-11-10 18:03:45 174 2

原创 逆波兰表达式求值,使用栈求值

1.0 逆波兰表达式是二叉树的后序遍历 使用栈求值的思路: 如果遇到的是数字,压入栈里面,继续遍历,如果遇到了 运算符号,需要比较运算符号的优先级,将计算出的值压入栈里面。栈的代码实现栈的实现// 判断是不是数字bool isNumber(char c){ if (c >= '0' && c <= '9') { return true; } else { return false; }}// 判断是不是 符号bool isMar...

2020-11-10 11:54:05 241 2

原创 C语言实现链栈

1.0 链栈的头文件#pragma once// 单指针链栈实现// 函数执行状态码#define OK 0#define ERROR 1// 状态码typedef int status;// 数据类型typedef int elemType;// 定义存储结构typedef struct StackNode{ // 存储的数据 elemType data; // 存储节点下一个的地址 struct StackNode* nextNode;}StackNod

2020-11-09 21:40:32 186

原创 C语言数据结构栈(数组实现)

1.0 栈的头文件#pragma once// 函数执行状态码#define OK 0#define ERROR 1// 状态码typedef int status;// 数据类型typedef int elemType;// 栈的大小#define MAXSIZE 10// 栈的存储形式typedef struct Stack{ int length; elemType top; elemType data[MAXSIZE];};// 栈typede

2020-11-09 17:58:29 119

原创 C语言数据结构单链表(LinkLits)

1.0 单链表实现(LinkList.h):#pragma once// 链表#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define INVALID_INDEX -1// 数据类型typedef int elemType;// 定义一个链表节点typedef struct Node{ // 当前节点保存的数据 elemType data; // 当前节点的后继节点 struct Node* n

2020-11-07 17:30:26 701

原创 C语言数据结构--线性表(List)

1.0 线性表线性表头文件:#pragma once#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define INVALID_INDEX -1// 存储空间初始分配量#define LIST_INIT_SIZE 20// 元素类型,假定是 int 类型。typedef int elemType;typedef struct ListNode{ // 容量 int capacity; /.

2020-11-06 21:10:58 2234

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除