![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构(c语言)
数据结构的学习
小白123**
这个作者很懒,什么都没留下…
展开
-
邻接表及广度优先遍历
邻接表原创 2022-06-01 10:59:52 · 209 阅读 · 0 评论 -
图及其遍历
图的定义:图(Graph)G由两个集合V和E组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常分别表示图G的顶点集合和边集合,E(G)可以为空集。若E(G)为空,则图G只有顶点而没有边。原创 2022-06-01 10:42:47 · 397 阅读 · 0 评论 -
哈夫曼树及编码
文章目录一、哈夫曼树的概念二、相关功能实现三、完整代码四、运行结果一、哈夫曼树的概念1、哈夫曼树:假设有m个权值,可以构造一棵含n个叶子结点的二叉树,若该树的带权路径长度达到最小,则称这样的二叉树为哈夫曼树。2、结点的带权路径长度:根节点到任意结点的路径长度与该节点的权值的乘积3、路径长度:路径上的分支数目4、树的带权路径长度:树中所有叶子结点的带权路径长度之和离根结点越远,权值越小二、相关功能实现1、结构体的定义typedef struct wordcnt{ // 统计字符和对应的原创 2022-05-28 18:29:42 · 1505 阅读 · 1 评论 -
n皇后问题
1、n皇后问题:指在n*n的棋盘上摆放n个皇后,使得任意两个皇后不在同一行、同一列或同一斜线上,求解满足这种摆放方式的解有多少种。2、代码实现:#include<iostream>#include<math.h>using namespace std;#define max 100int x[max];int n;//皇后数量 int sum = 0;//计算结解的个数//判断即将放置的位置(row,col)是否满足 bool place(int row,in原创 2022-05-28 16:39:23 · 127 阅读 · 0 评论 -
栈表达式求值(c语言数据结构)
1、头文件#include <iostream>#include <stdio.h>2、定义常量#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define MAXSIZE 100#define OVERFLOW -23、个性化设置using namespace std;typedef char SElemType;typedef int NElemType;typedef int St原创 2022-05-10 18:30:19 · 3826 阅读 · 6 评论 -
顺序表(c语言数据结构)
顺序表原创 2022-04-25 19:48:44 · 1050 阅读 · 0 评论 -
单链表(c语言数据结构)
老师的代码如下:#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.*@return The p原创 2022-04-28 14:19:29 · 3594 阅读 · 0 评论 -
静态链表(c语言数据结构)
静态链表定:逻辑结构上相邻的数据元素,存储在指定的一块内存空间中,数据元素只允许在这块内存空间中随机存放,这样的存储结构生成的链表称为静态链表。也就是说静态链表是用数组来实现链式存储结构,目的是方便在不设指针类型的高级程序设计语言中使用链式结构。它的优点是和动态链表一样,删除和插入元素时间复杂度低;不足是和数组一样,需要提前分配一块较大的空间。老师代码如下:#include <stdio.h>#include <malloc.h>#define DEFAULT_SIZE原创 2022-05-03 15:51:26 · 711 阅读 · 1 评论 -
栈及括号匹配问题(c语言数据结构)
1、栈的定义栈是一种线性存储结构,它具有如下特点:(1)栈中的数据元素遵守”先进后出”或“后进先出”的原则。(2)限定只能在栈顶进行插入和删除操作。(3)表尾端为栈顶,另一端为栈底。2、栈主要有以下几种基本操作:(1)Push(): 向栈内压入一个元素;(2)Pop(): 从栈顶弹出一个元素;(3)Empty(): 如果栈为空返回true,否则返回false;(4)GetTop(): 返回栈顶,但不删除元素;(4)size(): 返回栈内元素的大小;老师代码:#include &原创 2022-05-09 22:26:55 · 1123 阅读 · 0 评论 -
累加的递归实现及汉诺塔问题
1、累加的递归实现代码:#include<stdio.h>int Add(int n){ int sum; if(n <= 0) { printf("return 0\n"); return 0; } else { sum = Add(n-1)+n; printf("return %d\n",sum); return sum; }}void AddTest(){ int n, sum; printf("---- AddTest beg原创 2022-05-11 21:30:36 · 216 阅读 · 0 评论 -
二叉树的创建及遍历
文章目录一、二叉树的创建及遍历二、全部代码代码如下(示例)运行结果一、二叉树的创建及遍历(1)初始化队列QueuePtr initQueue(){ QueuePtr resultQueuePtr = (QueuePtr)malloc(sizeof(struct BTNodePtrQueue)); resultQueuePtr->nodePtrs = (BTNodePtr*)malloc(QUEUE_SIZE * sizeof(BTNodePtr)); resultQueuePtr->原创 2022-05-24 17:10:24 · 201 阅读 · 0 评论 -
压缩矩阵的转置
压缩转置操作图例:1、头文件#include <stdio.h>#include <malloc.h>typedef int elem;2、创建//原矩阵的行、列、数据typedef struct Triple{ int i; int j; elem e;}Triple,*TriplePtr;typedef struct CompressedMatrix{ int rows,columns,numElements; T原创 2022-05-19 17:43:45 · 160 阅读 · 0 评论 -
链队列和循环队列(c语言数据结构)
一、链队列:链队是指采用链式存储结果实现的队列,通常用单链表来表示。一个链队需要两个分别指示队头和队尾的指针才能确定。代码:#include <stdio.h>#include <malloc.h>//链队列的节点 typedef struct LinkNode{ int data; LinkNode* next;}*LinkNodePtr;//链队列.typedef struct LinkQueue{ LinkNodePtr front; LinkN原创 2022-05-17 16:59:47 · 431 阅读 · 0 评论 -
多项式相加(c语言数据结构)
1、老师的代码如下:#include <stdio.h>#include <malloc.h>/** * Linked list of integers. The key is data. The key is sorted in non-descending order. */typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;} *LinkList, *N原创 2022-05-05 12:11:54 · 1187 阅读 · 0 评论 -
二维数组与矩阵乘法
二维数组:原创 2022-05-19 16:12:59 · 496 阅读 · 0 评论 -
双链表(c语言数据结构)
老师代码如下:#include <stdio.h>#include <malloc.h>/** * Double linked list of integers. The key is char. */typedef struct DoubleLinkedNode{ char data; struct DoubleLinkedNode *previous; struct DoubleLinkedNode *next;} DLNode, *DLNodePtr;原创 2022-05-02 21:41:56 · 844 阅读 · 1 评论