数据结构路漫漫
文章平均质量分 52
吃喵喵酱的花椒
这个作者很懒,什么都没留下…
展开
-
数据结构复习.机考篇(c++)(严蔚敏版)
1.顺序表(可用vector代替)插入注意点:1.插入前要判断插入位置是否合法2.判断位置合法时注意可插位置为size+1,因为还可以插在尾部3.插入时将插入位置后面的元素往后移动,建议用 (i- -)void insert(int pos, int va) { pos--; if (pos >= 0&& pos <= size) { for (int i = size; i > pos; i--) { data[i] = da原创 2021-12-25 15:34:44 · 1214 阅读 · 0 评论 -
广义表(C++)
核心思想:1.节点类中用一个标志域区别是表还是元素2.节点类中使用联合体3.广义表类中存放一个起始指针1.创建1.两个函数的形式,详见代码注释2.两次接受输入,方便递归,见注释3.输入格式:空表用#表示,每个之间加逗号,用分号表示结束例如:a,(#),b,c,(d,(e));(如果觉得对输入要求过高,可以使用一个字符串保存输入,然后加一个处理函数,把其他格式的输入转化为此输入,函数中读输入时从该字符串中读即可)#include<bits/stdc++.h>using nam原创 2021-08-01 23:12:50 · 964 阅读 · 1 评论 -
稀疏矩阵(C++)
参考:数据结构(c++版)(第二版)清华大学出版社 陈宝平等主编核心:1.用一个三元组保存不为0的部分(本质是定义一个类,存放不为0元素的 值 , 行 列坐标)2.定义一个稀疏矩阵类,里面有三元组类的一维数组,本解法用的是静态(可以用指针实现动态,先分配一个小空间,如果空间不够,就重新声明一个指针开一个大小为 (原空间大小+1) 的空间,把值都复制进去,再释放原指针空间,最后把原指针指向重新声明的指针)3相加,相减,相乘都是把他扩展成二维数组,对应到代码就是两层循环 在循环中判断该行列坐标下原创 2021-07-19 22:02:09 · 3685 阅读 · 2 评论 -
矩阵的压缩储存(C++)
主要思想:1.利用数学公式进行下标转换,把原本高维的数组下标转换成一维本题的下标转换公式如下:来源是:(上一行的所有元素总和(本题中即为等差数列求和))+(这一行前面的所有元素)注意1.这里都是以0开头2.本题思想和下三角矩阵的一样,只不过是下三角矩阵要多开一个数组空间储存它上三角的值( 下三角矩阵中,上三角的值都相等),同时要更改一下 i < j 的情况。上三角矩阵就是反过来的等差数列求和.我采用的方法是用二维数组输入,如果想直接用一维数组接受输入也可以,注意下标就好了#原创 2021-07-19 12:53:15 · 382 阅读 · 1 评论 -
递归方法总结
1.写数学表达式,如 计算出栈次序数量2.让程序从递归终止情况开始处理,如进制转换的递归方法原创 2021-07-14 19:40:44 · 39 阅读 · 0 评论 -
循环队列(C++)
队列:特点有:1.先进先出,即尾进头出(或相反)2.两个下标,一个表示头一个表示尾3.本质也还是数组注意点:1.假溢出问题,如图所示,尾下标到顶不能再加,但下面还有储存位置解决办法:一:固定队头或队尾,出队或入队时移动元素,保证队头或队尾一直在底部或顶部二:循环队列(本文采用的的方法)循环队列带来的问题:无论时队空还是队满,都会有front == rear ,以及rear,front实现循环的具体方法解决方案:1.引入计数变量counter,当counter == maxsi原创 2021-07-14 14:57:48 · 692 阅读 · 0 评论 -
循环链表(C++版)
参考link.原创 2021-07-14 11:07:18 · 425 阅读 · 0 评论 -
栈,数据结构
字符类型的栈(有大小上限)从0开始计数主要实现思想:1.本质就是数组2.用下标表示栈顶3.出入栈就对下标加减就好了*PS:*若要实现任意长度的栈,使用栈链表(本质就是单链表),头插法创建单链表(这样可以保证出入栈方向与创建方向一致,头指针就是栈顶元素的指针,如果尾插的话,链表尾才是栈顶,不方便),出入栈就对头指针操作:入栈就新插入一个节点,并让头指针指向他。出栈就删除头指针指向的节点,并将头指针指向该节点下一个#include<bits/stdc++.h>using namesp原创 2021-07-12 20:05:56 · 42 阅读 · 0 评论 -
链表类(整型)
整型单链表,C++实现#include<bits/stdc++.h>using namespace std;class node//定义一个节点类{ int data; node* next;public: node() { next = NULL; } friend class listt;};class listt//定义一个链表类,加t是为了防止与系统函数重名{ node* head; int size;public: listt() { he原创 2021-07-12 17:51:51 · 1004 阅读 · 0 评论