The Fourth Dimension Space

枯叶北风寒,忽然年以残,念往昔,语默心酸。二十光阴无一物,韶光贱,寐难安; 不畏形影单,道途阻且慢,哪曲折,如渡飞湍。斩浪劈波酬壮志,同把酒,共言欢! -如梦令

数据结构作业之邻接表的插入和删除

/*张宏数据结构(第七章_图)作业:
题目描述:在有向图中
(1)增加一条弧  Addarc(adj,u,v)
(2)删除一条弧  Delarc(adj,u,v)
*/

#include
<iostream>
#include
<cmath>
#include
<cstdio>
#include
<algorithm>
#include
<string>
using namespace std;
#define MAX 1000000

struct node 
{
    
int adjvex;
    node
* next;
}
adj[MAX];

int Create(node adj[],int n,int m)//邻接表建表函数,n代表定点数,m代表边数
{
    
int i;
    node 
*p;
    
for(i=1;i<=n;i++)
    
{

        adj[i].adjvex
=i;
        adj[i].next
=NULL;
    }

    
for(i=1;i<=m;i++)
    
{
        cout
<<"请输入第"<<i<<"条边:";
        
int u,v;
        cin
>>u>>v;
        p
=new node;
        p
->adjvex=v;
        p
->next=adj[u].next;
        adj[u].next
=p;
    }

    
return 1;
}



int  Addnode(int u,int v)//此函数用于增加边
{

    node 
*p;
    p
=new node;
    p
->adjvex=v;
    p
->next=adj[u].next;
    adj[u].next
=p;
    
return 1;
}



int deletenode(int u,int v)//此函数用于边的删除
{

    node 
*P=adj[u].next;
    node 
*q=&adj[u];
    
while(P!=NULL)
    
{

        
if(P->adjvex==v)
        
{
            q
->next=P->next;
            delete P;
            
break;
        }


    }

    
return 1;
}


void print(int n)//邻接表打印函数
{
    
int i;
    node 
*p;
    
for(i=1;i<=n;i++)
    
{
        p
=&adj[i];
        
while(p!=NULL)
        
{
            cout
<<p->adjvex<<' ';
            p
=p->next;
        }

        cout
<<endl;
    }

}



int main()
{

    
int n;
    
int m;
    cout
<<"                         数据结构第七章(图)作业"<<endl;
    cout
<<"                                    "<<endl;
    cout
<<"题目描述:"<<endl;
    cout
<<"有向图中(1)增加一条弧  Addarc(adj,u,v)"<<endl;
    cout
<<"        (2)删除一条弧  Delarc(adj,u,v)"<<endl<<endl<<endl;
    cout
<<"请输入顶点的数目: ";
    cin
>>n;
    cout
<<"请输入邻边的数目: ";
    cin
>>m;
    Create(adj,n,m);
    cout
<<"输入的邻接表为:"<<endl;
    print(n);
    
int u,v;
    cout
<<"接下来执行添加操作,请输入边u,v(注意请不要和上表中的边重复):";
    cin
>>u>>v;
    Addnode(u,v);
    cout
<<"此时邻接表为:"<<endl;
    print(n);
    cout
<<"接下来执行删除操作,请输入边u,v:";
    cin
>>u>>v;
    deletenode(u,v);
    cout
<<"此时邻接表为:"<<endl;
    print(n);
    cout
<<"演示结束,谢谢您的使用"<<endl;
    
return 0;
}


posted on 2009-03-30 21:27 abilitytao 阅读(937) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理