- 博客(12)
- 收藏
- 关注
原创 数据结构——哈夫曼树与n皇后问题
当用 n 个结点(都做叶子结点且都有各自的权值)试图构建一棵树时,如果构建的这棵树的带权路径长度最小,称这棵树为“最优二叉树”,有时也叫“赫夫曼树”或者“哈夫曼树”。(1)构建结点bool place(int* paraSolution, int paraT){ int j; for (j = 1; j < paraT; j ++){ if ((abs(paraT - j) == abs(paraSolution[j] - paraSolution[paraT]))
2022-05-29 19:04:05
238
原创 数据结构——二叉树与遍历
二叉树的遍历方式主要有:先序遍历、中序遍历、后序遍历、层次遍历。先序、中序、后序其实指的是父节点被访问的次序。若在遍历过程中,父节点先于它的子节点被访问,就是先序遍历;父节点被访问的次序位于左右孩子节点之间,就是中序遍历;访问完左右孩子节点之后再访问父节点,就是后序遍历。不论是先序遍历、中序遍历还是后序遍历,左右孩子节点的相对访问次序是不变的,总是先访问左孩子节点,再访问右孩子节点。而层次遍历,就是按照从上到下、从左向右的顺序访问二叉树的每个节点。#include<stdio.h>#.
2022-05-24 19:16:04
234
原创 数据结构——二维数组与矩阵乘法
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑地集中到了一起,所以有时候可以简便
2022-05-21 12:55:05
539
原创 数据结构——链队列与循环队列
一.链队列1.定义//链队列节点typedef struct LinkNode{ int data; struct LinkNode* next;}*LinkNodePtr; //链队列 typedef struct LinkQueue{ LinkNodePtr front; LinkNodePtr rear; } *LinkQueuePtr;2.初始化//初始化LinkQueuePtr initQueue() { LinkQueuePtr resultP
2022-05-17 18:44:21
183
原创 累加问题和汉诺塔问题
1.汉诺塔问题大一上就学过汉诺塔了,稍加理解之后还是不怎么难的void move(char pos1, char pos2) { printf("%c--->%c\n", pos1, pos2);}void hanoi(int n, char pos1, char pos2, char pos3) { //pos1:起始,pos2:中转,pos3:目的// if (n == 1) { move(pos1, pos3); } else { hanoi(n - 1, pos
2022-05-12 19:46:08
177
原创 数据结构——栈的应用
一.括号匹配的检验遇到左括号就进栈,遇到右括号就跟当前栈顶匹配,能匹配就将其出栈,否则不匹配#include <stdio.h>#include <malloc.h>#define STACK_MAX_SIZE 10//创建栈结构体typedef struct charStack { int top; int data[STACK_MAX_SIZE];} *stackPtr;//输出栈void outputStack(stackPtr p.
2022-05-10 19:25:42
204
原创 数据结构——栈
栈的定义栈(stack)是限定仅在表尾进行插入或者删除的线性表。对于栈来说,表尾端称为栈顶(top),表头端称为栈低(bottom)。不含元素的空表称为空栈。因为栈限定在表尾进行插入或者删除,所以栈又被称为后进先出的线性表直接上代码#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100typedef int SElemType;//顺序栈的存储结构typedef struct{ SElemType.
2022-05-10 18:48:12
899
原创 数据结构——多项式加法
1.创建链表typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;} *LinkList, *NodePtr;2.初始化LinkList initLinkList(){ LinkList tempHeader = (LinkList)malloc(sizeof(struct LinkNode)); tempHeader->coefficient = 0; tempHead
2022-05-06 11:55:35
99
原创 数据结构——静态链表
静态链表:线性存储结构的一种,兼顾顺序表和链表的优点,是顺序表和链表的升级;静态链表的数据全部存储在数组中(顺序表),但存储的位置是随机的,数据直接的一对一关系是通过一个整型变量(称为“游标”,类似指针的功能)维持。它的存储空间是连续的。数据元素的个数从它创建的那一刻起就已经定死了。老师代码:#include <stdio.h>#include <malloc.h>#define DEFAULT_SIZE 5typedef struct StaticLinkedN
2022-05-03 15:38:31
795
原创 数据结构——双向链表
1.双链表的定义双向链表基于单链表。单链表是单向的,有一个头结点,一个尾结点,要访问任何结点,都必须知道头结点,不能逆着进行。而双链表添加了一个指针域,通过两个指针域,分别指向结点的前结点和后结点。这样的话,可以通过双链表的任何结点,访问到它的前结点和后结点。在双向链表中,结点除含有数据域外,还有两个链域,一个存储直接后继结点的地址,一般称为右链域;一个存储直接前驱结点地址,一般称之为左链域。双向链表结构示意图:/*随机数的范围*/#define MAX 10e/*节点结构*/typ
2022-05-03 15:26:08
6143
1
原创 数据结构——单链表
先上老师の代码#include <stdio.h>#include <malloc.h>/** * Linked list of characters. The key is data. */typedef struct LinkNode{ char data; struct LinkNode *next;} LNode, *LinkList, *NodePtr;/** * Initialize the list with a header. * @r
2022-04-29 14:29:16
732
原创 数据结构——线性表
第一次发这玩意,不知道该写点什么就随便写写吧先是老师的标准代码#include <stdio.h>#include <malloc.h> #define LIST_MAX_LENGTH 10 /** * Linear list of integers. The key is data. */typedef struct SequentialList { int actualLength; int data[LIST_MAX_LENGTH]
2022-04-26 13:58:13
1503
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人