/使用邻接表实现图的存储///
//
//
//
#include "iostream.h"
/定义弧结点//
typedef struct ArcNode{
int adjvex;//此弧所指顶点
ArcNode *nextarc;//指向下一条弧
char *info;//此弧相关信息
}ArcNode;
/定义顶点///
typedef struct VNode{
int data;//顶点信息
ArcNode *firstarc;//指向第一条弧
}VNode, *AdjList;
/根据图的ADT定义类
class Graph{
public:
Graph(int allvexnum);
~Graph();
private:
AdjList vertices;//各个顶点的集合
int vexnum,arcnum;//当前顶点数和弧数
};
/定义函数/
/
//构造函数
Graph::Graph(int vexnum_at_first){
int i;
int vexcon;
ArcNode *newnode, *p;
vexnum=vexnum_at_first;
arcnum=0;
vertices=new VNode[vexnum];
for(i=0;i<vexnum;i++){
cout<<"输入第"<<i+1<<"个顶点的值:"<<endl;
cin>>vertices[i].data;
}
for(i=0;i<vexnum;i++){
cout<<"与第"<<i+1<<"个顶点相连的顶点有(输入负数结束):"<<endl;
cin>>vexcon;
if(vexcon<0)continue;
newnode=new ArcNode;
newnode->adjvex=vexcon;
vertices[i].firstarc=newnode;
p=vertices[i].firstarc;
arcnum++;
do{
cin>>vexcon;
if(vexcon<0)break;
newnode=new ArcNode;
newnode->adjvex=vexcon;
p->nextarc=newnode;
p=p->nextarc;
arcnum++;
}while(1);
}
};
//析构函数
Graph::~Graph(){
int i;
ArcNode *p,*q;
for(i=0;i<vexnum;i++){
p=vertices[i].firstarc;
if(!p)continue;
q=p->nextarc;
delete p;
while(q){
p=q;
q=q->nextarc;
delete p;
}
}
delete[ ] vertices;
cout<<"图已删除";
}
void main(){
Graph *G;
G=new Graph(4);
delete G;
}
此程序运行输入数据后,在释放空间的时候为什么会出现出错的提示框?? thanks!!
求问一个C++问题
最新推荐文章于 2023-08-13 19:38:21 发布