zoukankan      html  css  js  c++  java
  • 邻接矩阵实现(初始版)

    邻接矩阵实现:

    运用了链式结构,其中包括一条用来存储起始节点的链表(纵向),另外一条用来存储与特定的起始点直接相邻的邻接点(横向);有待改进的是对于横向结构链表的存储存在头结点的冗余,因为在纵向结构中为了将其连接起来也为其设置了头结点。

    代码如下:

    #include <iostream>
    #include <string.h>
    using namespace std;
    #define WHITE -1;
    #define GRAY 0;
    #define BLACK 1;
    class Topoint
    {
        public:
        string topointname;
        int topointweight;
        int topointcolor;
        Topoint* nexto;
        Topoint()
        {
            nexto=NULL;
        }
        Topoint(string _topointname,int _topointweight,int _topointcolor)
        {
            topointname=_topointname;
            topointweight=_topointweight;
            topointcolor=_topointcolor;
            nexto=NULL;
        }
        void Display()
        {
            cout<<"ToPoint name: "<<topointname<<" weight: "<<topointweight<<" pointcolor: "<<topointcolor<<endl;
        }
    };
    class Frompoint
    {
        public:
        string frompointname;
        int frompointcolor;
        Frompoint* nextpoint;
        Topoint* nextopoint;
        Frompoint()
        {
            nextpoint=NULL;
            nextopoint=NULL;
        }
        Frompoint(string _frompointname,int _frompointcolor)
        {
            frompointname=_frompointname;
            frompointcolor=_frompointcolor;
            nextopoint=NULL;
            nextpoint=NULL;
        }
        void Display()
        {
            cout<<"Frompoint name: "<<frompointname<<" pointcolor: "<<frompointcolor<<endl;
        }
    };
    class Topointlinklist
    {
        public:
        Topoint* head;
        Topoint* rear;
        Topointlinklist()
        {
            head=NULL;
            rear=NULL;
        }
        int InsertTopoint(string topointname,int topointweight,int topointcolor)
        {
            Topoint* p=new Topoint(topointname,topointweight,topointcolor);
            if(head==NULL)
            {
                head=rear=p;
                return 1;
            }
            else
            {
                rear->nexto=p;
                rear=rear->nexto;
                return 1;
            }
            return 0;
        }
        void Display()
        {
            Topoint* p=head;
            cout<<"横向遍历:"<<endl;
            while(p!=NULL)
            {
                p->Display();
                p=p->nexto;
            }
        }
    };
    class Headlinklist
    {
        public:
        Frompoint* head;
        Frompoint* rear;
        Headlinklist()
        {
            head=NULL;
            rear=NULL;
        }
        int InsertFrompoint(string frompointname,int frompointcolor)              //竖直方向添加节点
        {
            Frompoint* p=new Frompoint(frompointname,frompointcolor);
            if(head==NULL)
            {
                head=rear=p;
                return 1;
            }
            else
            {
                rear->nextpoint=p;
                rear=rear->nextpoint;
                return 1;
            }
            return 0;
        }
        void InsertTopointList(Topointlinklist t)
        {
            rear->nextopoint=t.head;
        }
        void Display()
        {
            Frompoint* p=head;
            cout<<"纵向遍历起始节点:"<<endl;
            while(p!=NULL)
            {
                p->Display();
                p=p->nextpoint;
            }
        }
    };
    int main()
    {
        Headlinklist head1;
        Topointlinklist list1;
        head1.InsertFrompoint("1",-1);
        list1.InsertTopoint("1",1,-1);
        list1.InsertTopoint("2",1,-1);
        list1.InsertTopoint("3",1,-1);
        head1.InsertTopointList(list1);
    
    
        Topointlinklist list2;
        head1.InsertFrompoint("2",-1);
        list2.InsertTopoint("2",1,-1);
        list2.InsertTopoint("3",1,-1);
        list2.InsertTopoint("4",1,-1);
        head1.InsertTopointList(list2);
    
        list1.Display();
        list2.Display();
        head1.Display();
    }
    

      

    态度决定高度,细节决定成败,
  • 相关阅读:
    CSS浮动元素的水平居中
    html5移动web开发实战必读书记
    再说CSS3渐变——线性渐变
    链栈学习笔记
    用数组实现从文件搜索帐户和验证密码
    启程!
    在Application中集成Microsoft Translator服务之获取访问令牌
    在Application中集成Microsoft Translator服务之开发前准备
    Kinetic使用注意点--canvas
    Kinetic使用注意点--blob
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/2839594.html
Copyright © 2011-2022 走看看