- 博客(16)
- 收藏
- 关注
原创 数据结构 5.2 压缩矩阵的转置
压缩矩阵:指为多个值相同的元素只分配一个存储空间,对零元素不分配存储空间。在对二维数组进行基本操作时,时间复杂度达到了n的三次方,在经过压缩之后,时间复杂度可以得到有效的降低,现在对压缩的代码进行展示。第一步,创建typedef int elem;/*A triple for row index,column index,and data*/typedef struct Tripe { int i; int j; elem e;}Triple,*TriplePtr;第二步,初始
2022-05-19 22:15:13
344
原创 数据结构5.1二维数组与矩阵乘法
二维数组的定义可以采用静态和动态两种,静态数组是在定义的时候就知道了整个二维所需要的空间。在实际应用中大多利用动态数组,灵活度高,不用提前知道矩阵的大小,但在有些情况下,静态数组会更加方便直白。矩阵相乘的原理如下:第一步,定义1.动态typedef struct TwoDArray { int rows; int columns; int** elements;}TwoDArry,*TwoDArrayPtr;2.静态typedef struct TwoDStaticArr
2022-05-19 21:22:20
559
原创 数据结构3.6循环队列
循环队列其实就是一个数组,是靠队头、队尾下标来实现头尾相接代码展示第一步,定义一个循环队列typedef struct CircleIntQueue{ int data[TOTAL_SPACE]; int head; int tail;}*CircleIntQueuePtr;第二步,初始化CircleIntQueuePtr initQueue() { CircleIntQueuePtr resultPtr = (CircleIntQueuePtr)mal
2022-05-17 21:25:19
253
原创 数据结构3.5队列的基本操作——链队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列与栈最主要的不同之处是队列是先进先出,栈是先进后出。接下来对链队列的基本操作做一个代码展示第一步,定义链队列的节点* 链队列的节点*/typedef struct LinkNode { int data; struct LinkNode* next;}*LinkNodePtr
2022-05-17 21:09:36
292
原创 数据结构3.4递归算法——累加问题、汉诺塔问题
递归指的是,一个函数不断引用自身,直到引用的唯一已知对象时止的过程。一、对于累加问题的处理,通常有两种解决方法1.利用for或者while循环#include<stdio.h>int main(){ int n;//add to n int i;//cyclic variable int sum=0;//total scanf_s("%d",&n); if(n<0){ printf("false");
2022-05-12 17:44:35
575
原创 数据结构3.3表达式求值
表达式求值有很多巧妙之处,临摹自刘知鑫先看代码#include <iostream>#include <cstring>#include <algorithm>#include <stack>#include <unordered_map> using namespace std; stack<int> num;stack<char> op; void eval(){ auto b.
2022-05-10 22:49:37
461
原创 数据结构3.2栈的应用——括号匹配
还在为20,30个括号之间的逻辑关系无法理清而烦恼?巧妙运用栈,解放双手,解放双眼!首先,进行栈的定义,压栈,弹栈,打印,压栈、弹栈测试代码实现,在此不做展示,详情可见上期:数据结构3.1栈的基本操作:http://t.csdn.cn/kPlqW接下来,对重点代码进行实现void bracketMatching(char* paraString, int paraLength) { CharStackPtr tempStack = charStackInit(); push(t.
2022-05-10 22:29:10
130
原创 数据结构——3.1栈的基本操作
栈(stack)是限定在表尾进行插入或删除操作的线性表。因此,对栈来说,表现端有其特殊的含义,称为栈顶,相应的,表头端称为栈底。栈的修改是按照后进先出的原则进行的,所有栈也叫后进先出的线性表。,栈的基本操作除了入栈和出栈外,还有栈的初始化、栈空的判定,以及取栈顶元素等,接下来将对栈的基本操作进行代码展示。第一步,创建一个栈typedef struct CharStack { int top; int data[STACK_MAX_SIZE]; //The maximum lengt
2022-05-10 21:57:35
262
原创 数据结构2.5多项式相加
在多项式相加中一共有三种情况,p的指数大于q、q的指数大于p、相等。在相等时,又涉及到系数之和是否为零的情况,接下来将对多项式相加,并且连接做一个分布展示。第一步,定义链表typedef struct LinkNode { int coefficient; int exponent; struct LinkNode* next;}*LinkList,*NodePtr;第二步,初始化LinkList initLinkList() { LinkList tempHeader = (
2022-05-06 19:11:15
646
2
原创 数据结构2.4静态链表
在C语言中,静态链表的表现形式即为结构体数组,结构体变量包括数据域data和游标CUR。这种存储结构,仍需要预先分配一个较大的空间,但在作为线性表的插入和删除操作时不需移动元素,仅需修改指针,故仍具有链式存储的主要优点。接下来进行相关操作展示定义静态链表#include <stdio.h>#include <malloc.h> #define DEFAULT_SIZE 5 typedef struct StaticLinkedNode{ char
2022-05-02 23:53:01
954
2
原创 数据结构2.3双向链表
前期文章进行了单链表的相关操作展示,在此进行深化,根据老师代码加上自身理解,展现双向链表的基本操作不变的,我们最开始定义一个双向链表typedef struct DoubleLinkedNode { char data; struct DoubleLinkedNode* previous; struct DoubleLinkedNode* next;}DLNode,*DLNodePtr;/*Initialize the list with a header.return the po
2022-05-02 23:32:07
82
1
原创 数据结构2.2单链表
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。接下来将对单链表相关数据处理进行代码展示创建一个单链表typedef struct Linknode{ char data; struct Linknode* next;}LNode, * LinkList, * NodePtr;/** Initial the list with a header.* @return The pointerr to the header.*/单链表的初始化
2022-04-29 19:02:47
569
原创 数据结构——顺序表
在数据结构中,线性表也被称为顺序表,其定义为由n个数据特性相同的元素构成的有限序列。在这里将会对顺序表的相关操作进行代码展示和思路解答,希望能够得到各位猿猿的采纳(不足之处欢迎指正)!第一步,需要对顺序表进行初始化顺序表的初始化操作就是构造出一个空的顺序表typedef struct SequentialList { int actualLength; int data[LIST_MAX_LENGTH]; //The maximum length is fixed.} *S
2022-04-25 23:48:01
1033
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人