C/C++ 结构体问题 看我标记处和问题结尾!

原问题:C/C++ 结构体问题 看我标记处和问题结尾!
分类:编程开发 > 最后更新时间:【2017-05-12 18:28:51】
问题补充:

#include <iostream>

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

#define MAX_VERTEX_NUM 20

#define INFINITY INT_MAX

using namespace std;

int i,j,n,m;

enum Mark

{

INFEASIBLE=-2,

OVERFLOW,

ERROR,

OK

};

typedef struct ArcCell

{

int data;

} ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

typedef struct

{

char vexs[MAX_VERTEX_NUM];

AdjMatrix arcs;

int vexnum,arcnum;

} MGraph;

int LocateVex(MGraph &G,char v) //寻找图中相同名称的顶点

{

for(i=0; i<G.vexnum; i++)

{

if(v==G.vexs[i])

return i;

if(i==G.vexnum)

return ERROR;

}

return OK;

}

int CreateGraph(MGraph &G,int l,int k)

{

char v,v1,v2;

int count=0;

G.vexnum=l;

G.arcnum=k;

for( i=0; i<l; i++)

{

for(j=0; j<l; j++)

G.arcs[i][j].data=0;

}

while(l--)

{

cin>>v;

G.vexs[count++]=v;

}

while(k--)

{

int e,r;

cin>>v1>>v2;

e=LocateVex(G,v1);

if(i<0) return ERROR;

r=LocateVex(G,v2);

if(j<0) return ERROR;

G.arcs[e][r].data=1;

G.arcs[r][e].data=1;

}

return OK;

}

//------------------------------------------------------------------------------------------//

int InsertArc(MGraph &G,char v,char w)

{

i=LocateVex(G,v);

cout<<i;

j=LocateVex(G,w);

cout<<j;

if(i<0)

return ERROR;

if(j<0)

return ERROR;

if(i==j)

return ERROR;

if(G.arcs[i][j].data!=1)

{

G.arcs[i][j].data=1;

G.arcs[j][i].data=1;

cout<<G.arcs[i][j].data;

cout<<G.arcs[j][i].data;

G.arcnum++;

}

return OK;

}

//---------------------------------------------------------------------------------------------//

int InsertVex(MGraph &G,char v)

{

if(G.vexnum>=MAX_VERTEX_NUM)

return INFEASIBLE;

G.vexs[++G.vexnum]=v;

return OK;

}

int DeleteVex(MGraph &G,char v)

{

n=G.vexnum;

m=LocateVex(G,v);

if(j<0)

return ERROR;

char ch;

ch=G.vexs[n-1];

G.vexs[n-1]=G.vexs[m];

G.vexs[m]=ch;

for(i=0; i<n-2; i++)

{

G.arcs[m][i]=G.arcs[n-1][i];

}

G.arcs[m][m].data=0;

G.vexnum--;

return OK;

}

int DeleteArc(MGraph &G,char v,char w)

{

i=LocateVex(G,v);

j=LocateVex(G,w);

if(i<0)

return ERROR;

if(j<0)

return ERROR;

if(G.arcs[i][j].data)

G.arcs[i][j].data=0;

G.arcnum--;

return OK;

}

int main()

{

MGraph G;

int l,k;

char ch1,ch2;

cin>>l>>k;

CreateGraph(G,l,k);

cin>>ch1>>ch2;

InsertArc(G,ch1,ch2);

for( i=0; i<G.vexnum; i++)

{

for(j=0; j<G.vexnum; j++)

{

cout<<G.arcs[i][j].data<<" ";

}

cout<<endl;

}

return 0;

}

求教

cout<<G.arcs[i][j].data;

cout<<G.arcs[j][i].data;

为什么没结果的?

回答好的加金币!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

最佳答案

C/C++结构体的区别
C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。
C++中的结构体和类的异同:
一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数;
也就是说在C++当中,结构体中可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承,可以有虚函数。
二、不同之处:结构体定义中默认情况下的成员是public,而类定义中的默认情况下的成员是private的。类中的非static成员函数有this指针,(而struct中没有是错误的,一直被误导啊,经过测试struct的成员函数一样具有this指针),类的关键字class能作为template模板的关键字 即template<class T> class A{}; 而struct不可以。
实际上,C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结合。

最佳答案由网友  夺命薯条  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
6

分享到:

其他回答

暂无其它回答!