广义表的创建和遍历
遍历 创建 广义
2023-09-14 08:57:55 时间
for(list string ::iterator i = sl.begin(); i!=sl.end(); ++i){
string s = *i, first, second;
int pos = s.find_first_of("=");
if(pos!=s.npos){
first = s.substr(0, pos);
second = s.substr(pos+1, s.length());
} else {
cout "广义表的描述字符串出错!" endl;
return ERROR;
mp.insert(make_pair(first, second));
void out(GList Lx){
if(!Lx) return;
if(Lx- tag==NODE){
cout Lx- node endl;
return;
for(GList p=Lx; p; p=p- ptr.tp)
out(p- ptr.hp);
void createGList(GList L, string s){
if(s=="()"){
//创建空表
L = NULL;
} else {
L = new GLNode;//因为类中有string变量,不能用malloc, 否者赋值无效
if(s.find(",")==s.npos s.find("(")==s.npos s.find(")")==s.npos){//原子结点
if(mp.find(s) == mp.end()){
L- tag = NODE;
L- node = s;
} else {//当s是只有一个大写字母组成的时候,说明它是一个子表,继续扩展
createGList(L, mp[s]);//这块出了开始bug, 调了好长时间
} else {//非原子结点
L- tag = LIST;
GList p = L, q;
s = s.substr(1, s.length()-2);
string hs;
server(s, hs);//分离表头
createGList(p- ptr.hp, hs);
q = p;
if(s!=""){//表尾不空
p = new GLNode;
p- tag = LIST;
q- ptr.tp = p;
}while(s!="");
q- ptr.tp = NULL;
int main(){
freopen("in.txt", "r", stdin);
list string
string s;
while(cin s){
sl.push_back(s);
MyGList myGList(sl);
myGList.buildGList();
myGList.outGList();
return 0;
LeetCode 25K 个一组翻转链表&26删除排序数组中的重复项 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
链表- 删除排序链表中的重复元素 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。
LeetCode 25K 个一组翻转链表&26删除排序数组中的重复项 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
链表- 删除排序链表中的重复元素 存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。
相关文章
- 二叉树--创建、遍历
- 二叉树的创建与遍历(链式存储)
- java实现遍历树形菜单方法——Dao层
- C++中的树、二叉树、二叉树遍历、二叉树前序、中序、后序遍历相互求法
- Java实现 LeetCode 606 根据二叉树创建字符串(遍历树)
- Java实现 LeetCode 572 另一个树的子树(遍历树)
- Java实现 LeetCode 538 把二叉搜索树转换为累加树(遍历树)
- (算法)是否为二叉查找树的后序遍历数组
- 【二叉树】LeetCode 94. 二叉树的中序遍历【简单】
- LeetCode(107): 二叉树的层次遍历 II
- Leetcode0653. 两数之和 IV - 输入 BST(simple, 树的遍历,哈希方法)
- Hashtable数据存储结构-遍历规则,Hash类型的复杂度为啥都是O(1)-源码分析(阿里)
- 华为OD机试 - 二叉树中序遍历(Java & JS & Python)
- 第65篇 QML 之 JS中的对象创建、删除属性、遍历对象
- 树的非递归遍历
- 【Groovy】集合遍历 ( 使用集合的 eachWithIndex 方法进行遍历 | 代码示例 )
- js 实现层序遍历
- DFS 算法模板——二叉树的遍历非递归写法要会,排列组合的一定要自己画一颗树,变量i和当前遍历层数计数的start_index要注意区分
- 二叉排序树 bst 创建和遍历
- python-opencv知识总结之图像操作:创建、遍历、运算与查找