int *&n 怎么理解

int *&n 说明n是一个整型指针的别名;

代码演示:

int main()
{
	int m = 100;
	int *d = &m;
	int *&n = d;
	cout<<"m = "<<m<<" *d = "<<*d<<" *&n = "<<*&n<<endl;
	*n = 99;
	cout<<"m = "<<m<<" *d = "<<*d<<" *&n = "<<*&n<<endl;
	return 0;
}

当改变*n的值以后

d是一个指向m的整型指针,n是d的另外一个操作别名

  • 11
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include<iostream> using namespace std; int main() { int *q; int **p; int n,m; int i,j; char *dian; int flag; int *eulercl; void space(int** &p,int n); void freespace(int** &p,int n); int euler(int** &p,int* &q,int* &eulercl,int n,int m); cout<<"请输入顶点数和弧度数!\n"; cin>>n>>m; space(p,n); eulercl=new int[m+1]; q=new int[n]; dian=new char [n]; cout<<"请输入每一个顶点!\n"; for(i=0;i<n;i++) cin>>dian[i]; cout<<"请输入关联矩阵!\n"; for(i=0;i<n;i++) { q[i]=0; for(j=0;j<n;j++) { cin>>p[i][j]; } } flag=euler(p,q,eulercl,n,m); if(flag==1) { cout<<dian[eulercl[0]]; for(i=1;i<=m;i++) { cout<<"->"<<dian[eulercl[i]]; } cout<<endl; } else { cout<<"不存在欧拉回路!\n"; } freespace(p,n); delete [] q; delete [] dian; delete [] eulercl; return 0; } void space(int** &p,int n) { int i; p=new int*[n]; for(i=0;i<n;i++) { p[i]=new int[n]; } } void dfs(int** &p,int* &q,int n,int m,int num) { int i; q[m]=num; for(i=0;i<n;i++) { if(p[m][i]==0) continue; else { if(!q[i]) { dfs(p,q,n,i,num); } } } } void freespace(int** &p,int n) { int i; for(i=0;i<n;i++) delete [] p[i]; delete [] p; } void copyc(int** &p,int **&pp,int n) { int i,j; for(i=0;i<n;i++) { for(j=0;j<n;j++) pp[i][j]=p[i][j]; } } int euler(int** &p,int* &q,int* &eulercl,int n,int m) { int i,j; int v,w; int count=0; int current=0; int front,last; int **pp; int lianton(int** &p,int* &q,int n); space(pp,n); front=last=0; v=0; eulercl=new int [m+1]; eulercl[current++]=0; copyc(p,pp,n); while(count<m) { for(i=0,j=0;i<n;i++) { if(p[v][i]>0) { j+=p[v][i]; w=i; } } if(j>1) { for(i=0;i<n;i++) { pp[v][i]--; pp[i][v]--; if(p[v][i]>0&&lianton(pp,q,n)==1) { p[v][i]--; p[i][v]--; v=i; eulercl[current++]=i; count++; break; } pp[v][i]++; pp[i][v]++; } } else { p[v][w]--; p[w][v]--; v=w; eulercl[current++]=w; count++; } } freespace(pp,n); return 1; } int lianton(int** &p,int* &q,int n) { int i; int flag=0; for(i=0;i<n;i++) { q[i]=0; } dfs(p,q,n,0,1); for(i=0;i<n;i++) { if(q[i]==0) return 0; } return 1; }
06-08

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值