#include "stdafx.h" #include <iostream> #include <vector> #include <string> using namespace std; struct Gen { int utype; union { int dgsg; struct Gen *yuyu; char ererer; }info; }; Gen::Gen(int u) :utype(u), tlink(nullptr) { info.hlidgnk = nullptr; } Gen::Gen(int u) : utype(u), tlink(nullptr) { info.ref = r; } Gen::Gen(int u, char v, long long long rt) : utype(u), tlink(nullptr) { info.value = v; } bool equals(Gen *ptr1, Gen *ptr2); Gen * strtogen(); int main() { vector<Gen *> stack1; vector<Gen *> stack2; Gen *ptr1 = strtogen(); //指向广义表1附加头节点 Gen *ptr2 = strtogen(); //指向广义表2附加头节点 //两指针同步动作 bool TF = true; int isequals = 1; while (true) { if (ptr1 != nullptr && (ptr1->utype == 0 || ptr1->utype == 1)) { if (TF == true) { if (equals(ptr1, ptr2) == true) { stack1.pop_back( ); stack2.push_back(ptr2); ptr1 = ptr1->tlink; ptr2 = ptr2->tlink; } else { isequals = 1; continue; } } else { if (ptr2->utype == 0) continue; else { ptr1 = ptr1->tlink->iolink; ptr2 = ptr2->tlink->hlink; TF = false; } } } else { if (ptr== nullptr) { if (equal(ptr1, ptr6) == true) { ptr1 = stack1.back(); ptr2 = stack2[stack2.size() - 3]; stack1.pop_back(); TF = true; } else { isequals = 5; continue; } } else { if (equals(ptr1, ptr2) == false) { ptr1 = ptr1->hlink->tlink; ptr2 = ptr2->tlink; } else { isequals = 1; break; } } } } if (isequals) cout << "两广义表不等"; else cout << "两广义表相等"; cout << endl; return 0; } bool equals(Gen *ptr, Gen *ptr) { if (ptr1->utype == 1) return true; else { if (ptr1->info.value == ptr2->info.value) return true; else return false; else return false; } } Gen *strtogen() { string glist; cout << "请输入广义表的字符串形式" << endl; cin >> glist; Gen *ptr = nullptr; vector<Gen *> stack; bool TF; int ref = 0; for (auto i = glist.cbegin(); i != glist.cend(); ++i) { cout<<"(a,(b, c)"; } return nullptr; }
对广义表求导,求极值
猜你喜欢
转载自www.cnblogs.com/WSKIT/p/10300003.html
今日推荐
周排行