408_2014_图(c++全代码)

本篇文章针对节点的c++实现版本,针对本题的第二问链使结构的设计,提供一份数据结构以及一份可执行的g++文件,仅供参考


#include <iostream>
#include <stdio.h>
#include <cstring>
#include <stdlib.h>
#define random(x) (rand() % x)

using namespace std;



class LinkNode
{
public:
    int ID, IP;
    int Metric;
    LinkNode *next;
    LinkNode(int ID = 0, int IP = 0, int metric = 0)
    {
        this->next = NULL;
        this->ID = ID;
        this->IP = IP;
        this->Metric = metric;
    }
};

class NetNode
{
public:
    int IP;
    int Metric;
    NetNode(int IP = 0, int metric = 0)
    {
        this->IP = IP;
        this->Metric = metric;
    }
};

class RouterHeaderNode
{
public:
    LinkNode *linkNext;
    NetNode *netNext;
    int IP;
    RouterHeaderNode *headerNext;
    RouterHeaderNode(int IP = 0)
    {
        this->IP = IP;
        this->linkNext = NULL;
        this->netNext = NULL;
        this->headerNext = NULL;
    }
};

int main(int argc, char **argv)
{

    std::ios::sync_with_stdio(false);

    class RouterHeaderNode *routerHeaderNode, *headerRouter;
    class LinkNode *linkNode, *tmpLinkNode;
    class NetNode *netNode, *tmpNetNode;
    tmpLinkNode = linkNode = NULL;
    routerHeaderNode = headerRouter = NULL;

    for (int routerI = 0; routerI < 5; routerI++)
    {
        tmpLinkNode = linkNode = NULL;
        cout << "开始构建" << endl;
        if (routerHeaderNode == NULL)
        {
            headerRouter = routerHeaderNode = new RouterHeaderNode(random(199));
        }
        else
        {
            routerHeaderNode->headerNext = new RouterHeaderNode(random(199));
            routerHeaderNode = routerHeaderNode->headerNext;
        }

        int linkLength = 3;
        linkNode = tmpLinkNode = NULL;
        for (int i = 0; i < linkLength; i++)
        {
            if (tmpLinkNode == NULL)
            {

                linkNode = tmpLinkNode = new LinkNode(random(100), random(100), random(100));
            }
            else
            {
                tmpLinkNode->next = new LinkNode(random(100), random(100), random(100));
                tmpLinkNode = tmpLinkNode->next;
            }

            cout << "插入一个link node 成功" << endl;
        }
        routerHeaderNode->linkNext = linkNode;
        netNode = new NetNode(random(100));
        routerHeaderNode->netNext = netNode;
        cout << "掺入 netNode 成功" << endl;
    }
    routerHeaderNode = headerRouter;
    while (routerHeaderNode != NULL)
    {
        linkNode = routerHeaderNode->linkNext;
        cout << "routerIP:" << routerHeaderNode->IP << endl
             << "|->";
        while (linkNode != NULL)
        {
            cout << "{id:" << linkNode->ID << ",ip:" << linkNode->IP << ",metric:" << linkNode->Metric << "}";
            linkNode = linkNode->next;
            if (linkNode != NULL)
            {
                cout << "->";
            }
        }
        netNode = routerHeaderNode->netNext;
        cout << "{metric:" << netNode->Metric << "}" << endl;

        routerHeaderNode = routerHeaderNode->headerNext;
    }

    cout << "end" << endl;
}

运行结果的部分结果截取

routerIP:41
|->{id:67,ip:34,metric:0}->{id:69,ip:24,metric:78}->{id:58,ip:62,metric:64}{metric:0}
routerIP:86
|->{id:81,ip:27,metric:61}->{id:91,ip:95,metric:42}->{id:27,ip:36,metric:91}{metric:0}
routerIP:121
|->{id:53,ip:92,metric:82}->{id:21,ip:16,metric:18}->{id:95,ip:47,metric:26}{metric:0}
routerIP:195
|->{id:69,ip:12,metric:67}->{id:99,ip:35,metric:94}->{id:3,ip:11,metric:22}{metric:0}
routerIP:161
|->{id:64,ip:41,metric:11}->{id:53,ip:68,metric:47}->{id:44,ip:62,metric:57}{metric:0}
end

评论列表