数据结构
Yuki(void)
这个作者很懒,什么都没留下…
展开
-
栈的简单应用---括号匹配和表达式(逆波兰表达式和中缀表达式)的计算
1.括号匹配 算法思路:从左往右依次扫描括号串,如果遇到左括号串如 (, [ ,{ ,将它们入栈,如果遇到右括号串如 ) , ], } , 则从栈中出栈一个左括号,并检测是否于该右括号匹配。该思路有三种不匹配的情况,一是括号不匹配,二是扫到右括号时左括号栈已经为空,三是整个字符串扫描完毕后,左括号栈中依然还有左括号未出栈。如果以上三种情况都不满足,则说明该括号串是匹配的 /* * 判断括号字符串是否匹配 * */ #include<iostream> #include<string&g原创 2022-03-30 16:16:39 · 541 阅读 · 0 评论 -
数据结构--顺序表和单链表
顺序表的基本操作 //顺序表静态分配内存空间的情况 #include<bits/stdc++.h> using namespace std; const int maxsize = 100; //定义一个顺序表 typedef struct{ int data[maxsize]; int len;//顺序表的长度 }Seqlist; //初始化一个顺序表 bool InitSeqlist(Seqlist &L){ for(int i = 0;i<maxsize;i原创 2022-03-12 22:27:34 · 1914 阅读 · 0 评论 -
2-路归并排序(二分思想)
归并排序是一个很经典的题目,通常最简单的做法是利用二分和递归的思想来完成。 以C语言网上的题目为例:归并排序 //使用二分递归的思想进行归并排序 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+5; int a[maxn]; //合并,注意L2 = R2+1, L2与R2紧紧相邻 void Merge(int a[],int L1,int R1,int L2,int R2){ int i = L1;原创 2021-09-18 09:59:52 · 250 阅读 · 0 评论