对广义表求导,求极值

#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