- 博客(10)
- 收藏
- 关注
原创 N皇后问题与哈夫曼树
一、N皇后问题的思路二、具体代码#include <stdio.h>#include <malloc.h>#include <math.h> bool place(int *paraSolution, int paraT){ //判断第paraT行是否在前几行的对角线上或者皇后在同一列上 //如果在对角线上那么第paraT行减去前面的某一行的行数的绝对值等于对应皇后的列数相减的绝对值 for (int j = 1; j &l
2022-05-29 20:42:39 153
原创 二叉树的创建与遍历
一、概念二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。二、代码实现#include <stdio.h>#include <malloc.h> #define QUEUE_SIZE 5 /** * Binary tree node. */t
2022-05-24 23:02:41 134
原创 二维数组与矩阵乘法与矩阵压缩
一、二维数组与矩阵乘法矩阵乘法其实就是一个矩阵拿出一行,另一个矩阵拿出一列进行相乘,得出的值放进新的矩阵,新的矩阵大小为第一个矩阵的行数+第二个矩阵的列数#include <stdio.h>#include <malloc.h>#include <stdlib.h> #define ROWS 4#define COLUMNS 5/** * 动态二维数组 定义1 */typedef struct TwoDArray{ int rows; in
2022-05-19 19:51:31 204
原创 链队列与循环队列
一、链队列链队列是一种先进先出的方式,与日常的排队原理相同。代码如下#include <stdio.h>#include <stdlib.h>//链表中的节点结构typedef struct QNode{ int data; struct QNode *next;} QNode;//创建链式队列的函数QNode *initQueue(){ //创建一个头节点 QNode *queue = (QNode *)malloc(sizeof(QNode)
2022-05-17 16:56:07 532
原创 递归及其简单应用
一、递归的概念程序调用自身的编程技巧称为递归( recursion)。递归作为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。简而
2022-05-12 17:10:34 537
原创 表达式求值——栈的相关运用
一、主要思路 通过对符号优先级的比较以及括号的匹配来完成复杂计算式的运算,利用栈的特性来完成括号匹配。二、相关代码1、定义两个结构体分别用于储存运算符与计算结果typedef struct{ SElemType *base; SElemType *top; int stacksize;}SqStack_optr;//OPTR运算符栈类型 typedef struct{ NElemType *base; NElemType *top; int stacksiz...
2022-05-10 19:50:10 249
原创 栈及相应的括号匹配
一、栈的相关概念与特点 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。特点:(1)集合性。栈是由若干个元素集合而成,当没有元素的空集合称为空栈;(2)线性结构。除栈底元素和栈顶元素外,栈中任一元素均有唯一的前驱元...
2022-05-10 19:06:29 124
原创 C语言数据结构学习(5):多项式相加
一、代码实现1.构建结构体 typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;}*LinkList,*NodePtr;2.初始化结点 LinkList initLinkList(){ LinkList tempHeader=(LinkList)malloc(sizeof(struct LinkNode)); tempHeader->
2022-05-06 10:32:39 605
原创 C语言数据结构学习(4):静态链表
一、静态链表概念用数组描述的链表,即称为静态链表。在C语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域data和游标。优点:这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存储结构的主要优点。二、代码实现1.构建结构体typedef struct StaticLinkedNode{ char data; int next;} *NodePtr; typedef struct Sta
2022-05-03 14:58:51 1533 1
原创 C语言数据结构学习(3):双链表
一、双链表的定义 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。二、双链表的构建1.构建结构体 typedef struct DoubleLinkedNode{ char data; struct DoubleLinkedNode *previous; struct DoubleLinked...
2022-05-03 14:52:41 1461 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人