自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构-18(邻接表及广度优先遍历)

广度优先搜索遍历类似于树的按层次遍历,对于用邻接表做存储结构的图,从某个给定 顶点出发的图的遍历得到的访问结点顶点次序,随建立的邻接表的不同而可能不同。(2)初始化(3)判断队列中是否有空间(4)添加结点(5)删除结点(6)构建邻接表(7)打印(8)广度优先遍历(9)测试函数

2022-06-01 10:47:01 166

原创 数据结构-17(图的遍历)

图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。(2)初始化(3)判断是否有空间(4)添加一个结点(5)删除一个结点(6)图的建立(7)初始化(8)深度优先遍历(9)广度优先遍历(10)测试函数

2022-06-01 10:36:02 135

原创 数据结构-16(N皇后问题)

N 皇后问题源自国际象棋,所有棋子中权力最大的称为皇后,它可以直着走、横着走、斜着走(沿 45 度角),可以攻击移动途中遇到的任何棋子。N 皇后问题的具体内容是:如何将 N 个皇后摆放在 N*N 的棋盘中,使它们无法相互攻击。(1)确认有无位置bool place(int* paraSolution, int paraT){ int j; for (j = 1; j < paraT; j ++){ if ((abs(paraT - j) == abs(paraSol

2022-05-29 15:58:19 221

原创 数据结构-15(哈夫曼树)

数据结构-15(哈夫曼树)

2022-05-29 15:57:46 122

原创 数据结构-14(二叉树)

二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点。(1)建立队列及二叉树节...

2022-05-24 18:49:44 234

原创 数据结构-13(压缩矩阵的转置)

对于一个n*m的矩阵,我们一般会想到开一个n*m的二维数组来存储,这样计算操作都很方便模拟,但当一个矩阵很大时,这样对于空间的开销与浪费是很可怕的,尤其是当矩阵变成多维时。但我们往往不会在矩阵每一个位置都存有数据,很多矩阵元素其实是0,我们需要记录的只是那些非零元素,于是我们可以记录非零元素的位置与值,这样便可以大大减少空间上的浪费。(1)建立矩阵typedef struct Triple{ int i; int j; elem e;} typedef struct

2022-05-19 14:35:57 99

原创 数据结构-12(二维数组与矩阵乘法)

(1)建立二维数组及矩阵typedef struct TwoDArray{ int rows; int columns; int** elements;}typedef struct TwoDStaticArray{ int rows; int columns; int elements[ROWS][COLUMNS];}(2)初始化TwoDArrayPtr initTwoDArray(int paraRows, int paraColumns){ int i; Two

2022-05-19 14:28:14 82

原创 数据结构-11(循环队列)

为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进入队运算时,只需要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。.

2022-05-17 00:08:55 290 1

原创 数据结构-10(链队列)

链队列与链表相似,使用链表实现的队列,具有队头指针和队尾指针,指示队列元素所在的位置。不同的是它具有对列的运算方法,存储结构和链表相同。只能队尾插入元素、在队头删除元素。是先进先出的线性表,先进入的元素出队,后进入的元素才能出队。(1)建立链队列及其结点typedef struct LinkNode{ int data; LinkNode* next;}*LinkNodePtr;typedef struct LinkQueue{ LinkNodePtr front; LinkNode

2022-05-17 00:00:58 306 1

原创 数据结构-9(栈与递归及其应用)

(1)递归的实现(核心函数)int addTo(int paraN) { int tempSum; printf("entering addTo(%d)\r\n", paraN); if (paraN <= 0) { printf(" return 0\r\n"); return 0; } else { tempSum = addTo(paraN - 1) + paraN; printf(" return %d\r\n", tempSum); return tempS

2022-05-12 00:49:14 90

转载 数据结构-8(栈的应用--表达式求值)

表达式求值是栈的一个重要的应用。例如计算器中的加减乘除的表达式计算,都会使用栈来进行求值。下面的代码只用两个栈便实现了表达式求值的功能。但由于是C++,还有很多地方不熟悉,主要还是在于观摩学习。#include <iostream>#include <cstring>#include <algorithm>#include <stack>#include <unordered_map>using namespace std;s

2022-05-10 16:54:53 242

原创 数据结构-7(栈的应用--括号匹配)

在一个表达式中含有圆括号或方括号等来表示运算的优先级,将这些括号提取出来就构成了括号序列(1)建立空栈typedef struct CharStack { int top; int data[STACK_MAX_SIZE];} (2)初始化CharStackPtr charStackInit() { CharStackPtr resultPtr = (CharStackPtr)malloc(sizeof(struct CharStack)); resultPtr-

2022-05-10 16:45:09 310

原创 数据结构-6(栈)

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。(1)typedef struct CharStack { int top; int data[STACK_MAX_SIZE]; }(2)void ou

2022-05-10 14:51:26 70

原创 数据结构-5(多项式相加)

(1)建立链表typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;} (2)初始化链表LinkList initLinkList(){ LinkList tempHeader = (LinkList)malloc(sizeof(struct LinkNode)); tempHeader->coefficient = 0; tempHeader->exponent

2022-05-05 17:06:36 113 1

原创 数据结构-4(静态链表)

静态链表,也是线性存储结构的一种,它兼顾了顺序表和链表的优点于一身,可以看做是顺序表和链表的升级版。使用静态链表存储数据,数据全部存储在数组中(和顺序表一样),但存储位置是随机的,数据之间"一对一"的逻辑关系通过一个整形变量(称为"游标",和指针功能类似)维持(和链表类似)。(1)建立链表typedef struct StaticLinkedNode{ char data; int next;}typedef struct StaticLinkedList{ NodePtr nod

2022-05-03 12:41:11 165

原创 数据结构-3(双链表)

双向链表是一种复杂类型的链表,它的节点包含指向序列中前一个节点和下一个节点的指针。 因此,在双向链表中,节点由三部分组成:节点数据,指向下一个节点的指针(next指针),指向前一个节点的指针(prev指针)。//原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/data_structure/doubly-linked-list.html(1)建立链表typedef struct DoubleLinkedNode{ char d

2022-05-03 12:29:58 508

原创 数据结构-2(单链表)

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。(1)初始化链表LinkList initLinkList(){ NodePtr tempHeader = (NodePtr)malloc(sizeof(LNode)); tempHeader->data = '\0'; tempHeader-&.

2022-04-28 13:06:40 121

原创 数据结构-1(顺序表)

本程序的功能是初步构建学生的信息管理录入系统,可以添加、存储、显示输入的学生信息,也可以删除学生信息。(PS:菜鸟入门)#include<stdio.h>#include<malloc.h>#defineLIST_MAX_LENGTH10typedefstructSequentialList{intactualLength;intdata[LIST_MAX_LENGTH];}*SequentialListPtr;//调......

2022-04-25 19:41:37 754

空空如也

空空如也

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

TA关注的人

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