平时看到C/C++ 结构体问题的一些知识,比较有用,分享出来
来源:互联网 发布:淘宝上日本直邮几天 编辑:程序博客网 时间:2024/05/18 11:26
程序如下:
#include <iostream>#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define MAX_VERTEX_NUM 20#define INFINITY INT_MAXusing 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++中的结构体和类体现了数据结构和算法的结合。
0 0
- 平时看到C/C++ 结构体问题的一些知识,比较有用,分享出来
- java学习当中,常可以看到的问题,我觉得比较有用,就发表出来!
- 日常中,常看到的C#一些问题,我感觉真的挺好的,分享出来!
- C语言中一些比较基础而又重要的知识
- c trap里看到的一些东西
- 一些有用的知识
- C程序设计题目,比较有意思的问题分享
- 【C#】结构体与类的比较
- 看到比较有用的博文汇总
- c 语言的一些知识
- C语言的一些知识
- C语言的问题,关于temp参数的一些知识
- c语言结构体知识
- C語言,一些有用的資料
- 非常有用的一些objective-c知识点
- 非常有用的一些objective-c知识点
- c语言一些有用的函数
- 非常有用的一些objective-c知识点
- 使用Maven搭建SSM框架教程
- 20170512
- No property sql found for type xxx.xxx.entity.UserdefinedGroup
- 水题一道----奶牛政坛
- ant+dva Ract系统前端开发教程
- 平时看到C/C++ 结构体问题的一些知识,比较有用,分享出来
- 【Android】 AndroidManifest.xml文件全部属性详细解析
- spark 2.1 Memory Store
- 国内基于obs开源项目
- Mybatis之通用mapper的使用
- Scala循环体break 和 continue方法
- 使用ffmpeg将YUV420P图像压缩到jpg图片
- js判断输入框内容格式
- Struts2使用小问题-NoSuchFieldException