
数据结构
ღ江晚吟a
如果浮生若梦,万事无常,最终都归于尘土,那么也许我们的雄心壮志不过徒然为荒诞不经的玩笑而已。如果我们无可救药地执着于自己的意义,或许也只能安于自身的可笑。
展开
-
网页跳转(栈)
描述蒜头君每天都在用一款名为 “蒜厂浏览器” 的软件。在这个浏览器中,一共三种操作:打开页面、回退和前进。它们的功能如下:打开页面:在地址栏中输入网址,并跳转到网址对应的页面; 回退:返回到上一次访问的页面; 前进:返回到上次回退前的页面,如果上一次操作是打开页面,那么将无法前进。现在,蒜头君打开浏览器,进行了一系列操作,你需要输出他每次操作后所在页面的网址。输入第一行输入一个整数 t(0 < t <= 10),表示有 t 组数据。 第二行输入一个整数 n(0 <原创 2021-01-27 12:36:45 · 500 阅读 · 0 评论 -
括号匹配(栈)
思路就是创建一个栈,然后将左括号进栈,之后寻找右括号,找到了,则匹配成功。若最后栈中还有括号剩余,则输出NO源码#include<bits/stdc++.h>using namespace std;char s[500005];stack<int> st;int ans[500005];int main(){ int len; bool f; cin>>s; len = strlen(s); f = true; for(int i = .原创 2021-01-27 11:42:31 · 160 阅读 · 0 评论 -
遍历二叉树和线索二叉树
1.遍历二叉树1.2 二叉树的二叉链表存储表示typedef struct BiTNode{ telemtype data;//节点数据域 struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;//一个:BiTNode的结构体 一个结构体变量:BiTree1.3中序遍历的递归算法void InorderTraverse(BiTree T){ //中序遍历{ if(T){ //非空 InorderTraverse(T->l原创 2020-08-25 19:45:29 · 362 阅读 · 0 评论 -
kmp(供自己理解)
思路大概理解了KMP算法,next数组的第一位处于失配状态,所以nexr[0]=-1之后便将前缀和后缀开始匹配 通过next[i],计算next[i+1]重点要理解j=next[j]0 1 2 3 4 5 6 7 8 9 10a b a a b a a a b c-1 0 0 1 1 2 3 4 1比如匹配到了j=3,i=6这个位置,然后匹配下一个位置。那后由于之前的发现j=0,2,5的都是a说清楚一点就是j=0,i=2的时候匹配,j=3,i=5的时候也匹配然后.原创 2020-08-19 09:41:17 · 144 阅读 · 0 评论 -
数据结构概述
概述定义算法(解题方法和步骤)衡量算法的标准数据结构的地位定义我们如何把现实中大量而复杂的问题以特定的数据类型(单个数据怎样存储? )和特定的存储结构( 个体的关系)保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法。(比如班里有15个人,其信息量也许一个数组就搞定了,但是假如10000个,怎么办?内存也许没有这么多连续的空间,所以我们改用链表,you see 这就是与存储有关系。又比如,人事管理原创 2020-05-26 10:30:51 · 100 阅读 · 0 评论 -
malloc()动态分配内存
# include <stdio.h># include <malloc.h>int main(void){ int a[5] = {4, 10, 2, 8, 6}; int len; printf("请输入你需要分配的数组的长度: len = "); scanf("%d", &len); int * pArr = (int *)malloc(sizeof(int) * len);// *pArr = 4; //类似于 a[0] = 4;// pArr原创 2020-05-27 20:54:20 · 212 阅读 · 0 评论 -
跨函数使用内存
# include <stdio.h># include <malloc.h>struct Student{ int sid; int age;};struct Student * CreateStudent(void);//函数类型为结构体类型,返回的也是结构体类型void ShowStudent(struct Student *);int main(void){ struct Student * ps; ps = CreateStudent();/原创 2020-05-28 07:23:38 · 110 阅读 · 0 评论 -
预备知识
预备知识指针指针的知识结构体动态内存的分配和释放二级目录三级目录指针指针的知识结构体动态内存的分配和释放二级目录三级目录原创 2020-05-28 09:59:33 · 133 阅读 · 0 评论 -
动态数组的实现
常用函数void init_arr(struct Arr *pArr,int length);//初始化bool append_arr(struct Arr *pArr,int val);//追加bool insert_arr(struct Arr *pArr,int pos,int val);//pos的值从1开始,插入bool delete_arr(struct Arr *pArr,int pos,int * Pval);//删除int get();bool is_empty(struct原创 2020-05-28 18:38:37 · 167 阅读 · 0 评论 -
C实现链表的各种操作
# include <stdio.h># include <malloc.h># include <stdlib.h>typedef struct Node{ int data; //数据域 struct Node * pNext; //指针域}NODE, *PNODE; //NODE等价于struct Node PNODE等价于struct Node *//函数声明PNODE create_list(void); //创建链表void t原创 2020-05-30 18:11:38 · 257 阅读 · 0 评论 -
离散存储[链表]
链表定义分类算法链表的优缺点:定义分类算法链表的优缺点:原创 2020-05-30 18:37:28 · 156 阅读 · 0 评论 -
数据结构__栈
栈一.定义二.分类1.静态栈:2.动态栈三.算法压栈出栈四.应用二级目录三级目录一.定义 1.一种可以实现"先进后出"的数据结构 2.栈类似于箱子二.分类1.静态栈: 1.用数组实现 2.栈的大小有限制 3.遍历简单2.动态栈 1.用链表实现 2.栈的大小没有限制三.算法压栈出栈四.应用二级目录三级目录...原创 2020-06-02 21:13:47 · 117 阅读 · 0 评论 -
队列的完整程序
# include <malloc.h>typedef struct Queue{ int * pBase; int front; int rear;}QUEUE; void init(QUEUE *);bool en_queue(QUEUE *, int val); //入队void traverse_queue(QUEUE *);bool full_queue(QUEUE *);bool out_queue(QUEUE *, int *);bool emput原创 2020-06-03 22:40:25 · 406 阅读 · 0 评论 -
数据结构__队列
队列一.定义:二.分类链式队列:用链表实现静态队列:用数组实现循环队列的讲解:循环队列需要几个参数来确定循环队列各个参数的含义循环队列入队伪算法讲解循环队列出队伪算法判断循环队列是否为空判断链表是否已满三.队列算法循环队列1.结构体的创建2.队列的初始化3.队列的遍历4.判断队列是否已满5.判断队列是否为空6.出队7.入队8.[完整程序](https://blog.youkuaiyun.com/m0_46549425/article/details/106534743)四.队列的具体运用一.定义:一种可以实现“先进原创 2020-06-03 22:46:57 · 244 阅读 · 0 评论