第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我想實(shí)現(xiàn)結(jié)構(gòu)體賦值,即q=p;試了幾種方法都不可行,請(qǐng)指教。(不怎么懂)

我想實(shí)現(xiàn)結(jié)構(gòu)體賦值,即q=p;試了幾種方法都不可行,請(qǐng)指教。(不怎么懂)

C++
mrs_empress 2017-06-11 12:17:08
#include?<iostream> #include?<cstdlib> #define?INF?99999999 using?namespace?std; #define?MaxVnum?50???//圖的頂點(diǎn)數(shù)上限 typedef?struct?ArcNode{//表結(jié)點(diǎn) ????????int?adjvex; ????????struct?ArcNode?*nextarc; ????????//第一種 ????????void?set(ArcNode?*s1,ArcNode?*s2){ ????????????s1->adjvex=s2->adjvex; ????????????s1->nextarc=s2->nextarc; ????????} ????????ArcNode&?operator=(const?ArcNode?*a){ ????????????set(this,(ArcNode?*)&a); ????????} ???????/*第二種 ????????ArcNode&?operator=(ArcNode&?a){ ????????????adjvex=a.adjvex; ????????????nextarc=a.nextarc; ????????????return?*this; ????????} ???????? ????????類似與第二種 ????????ArcNode*?operator=(ArcNode*?a){ ?????????????adjvex=a->adjvex; ?????????????nextarc=a->nextarc; ?????????????return?this; ????????}? ?????*/ ????? }ArcNode; typedef?struct{//頭結(jié)點(diǎn) ??????????ArcNode?*firstarc; }AdjList[MaxVnum]; typedef?struct{ ????????int?vexnum,arcnum;//圖的實(shí)際頂點(diǎn)數(shù)、邊數(shù) ????????AdjList?vertices;//鄰接表 }ALGraph; bool?visited[MaxVnum];//訪問(wèn)標(biāo)志數(shù)組 void?Create_ALGraph(ALGraph?&G); void?DFSTraverse_ALGraph(ALGraph?G); void?DFS_ALGraph(ALGraph?G,int?v); int?main(){ ?????ALGraph?G2; ?????Create_ALGraph(G2); ?????DFSTraverse_ALGraph(G2); ?????return?0; } void?Create_ALGraph(ALGraph?&G){ ?????cin>>G.vexnum>>G.arcnum; ?????for(int?i=0;i<G.vexnum;i++)????G.vertices[i].firstarc=NULL; ?????for(int?i=0;i<G.vexnum;i++){ ????????char?a[G.vexnum+1]; ????????cin>>a; ????????for(int?j=0;j<G.vexnum;j++) ????????????if(a[j]=='1'){ ????????????????ArcNode?*p; ????????????????p=(ArcNode?*)malloc(sizeof(ArcNode)); ????????????????p->adjvex=j;p->nextarc=NULL; ????????????????ArcNode?*q=G.vertices[i].firstarc; ????????????????if(!q){ ????????????????????q=p;//想要實(shí)現(xiàn)這個(gè) ???????????????} ????????????????else{ ????????????????????while(q->nextarc)q=q->nextarc; ????????????????????q->nextarc=p; ????????????????} ????????????} ?????} } void?DFSTraverse_ALGraph(ALGraph?G){ ????for(int?v=0;v<G.vexnum;v++)??visited[v]=false; ????for(int?v=0;v<G.vexnum;v++) ????????if(!visited[v]) ????????????DFS_ALGraph(G,v); } void?DFS_ALGraph(ALGraph?G,int?v){ ????visited[v]=true; ????cout<<v<<endl; ????for(ArcNode?*w=G.vertices[v].firstarc;w;w=w->nextarc){ ????????int?p=w->adjvex; ????????if(!visited[p]) ????????????DFS_ALGraph(G,p); ????} }
查看完整描述

3 回答

已采納
?
onemoo

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊

p 和 q 都是指向 ArcNode 類型的指針,那么你說(shuō)的?q=p 是希望讓 p 所指的 node “賦值”給 q 所指的 node 嗎?

如果是這樣的話,那只寫(xiě) q = p 是不行的。

q = p 只是指針間的賦值,只是讓 q 指針指向 p 指針?biāo)傅膶?duì)象。而?G.vertices 數(shù)組中的原指針還是指向原來(lái)的 node。

雖然你在?ArcNode 中重載了 operator=,但這是?ArcNode 的成員函數(shù),調(diào)用它需要左操作數(shù)類型是?ArcNode 類型,而不是?ArcNode 指針類型。

你可以試試 *q = p 這樣來(lái)調(diào)用。


你的?ArcNode&?operator=(const?ArcNode?*a) 將參數(shù)聲明為 const 的,但是為了能夠調(diào)用 set 函數(shù),所以還需要將強(qiáng)制轉(zhuǎn)型來(lái)去掉 const 修飾。

我想說(shuō)的是在 C++ 中,最好不要用 (xxx) 的方式來(lái)轉(zhuǎn)型,尤其是去掉 const 指針的轉(zhuǎn)型應(yīng)該用?const_cast<>。而且去掉 const 的轉(zhuǎn)型始終是有危險(xiǎn)的,雖然在你這個(gè)代碼中應(yīng)該沒(méi)什么問(wèn)題(因?yàn)?p 是否為 const 指針本就無(wú)所謂,由于你參數(shù)聲明為 const 指針才成為 const 的)。

但其實(shí)你完全可以避免去 const 轉(zhuǎn)型,只要你把?set 函數(shù)的第二個(gè)參數(shù)也聲明為 const 就可以了。畢竟 set 函數(shù)也不去修改第二個(gè)參數(shù)所指的對(duì)象。


進(jìn)一步說(shuō):你的 ArcNode&?operator=(const?ArcNode?*a) 函數(shù)本來(lái)就很奇怪。

= 運(yùn)算符一般使用在相同類型的對(duì)象上的,也就是等號(hào)左右兩側(cè)的類型應(yīng)該相同。這雖然不是強(qiáng)制要求,但慣例如此,而且更直觀。

將 = 運(yùn)算符重載為?ArcNode&?operator=(const ArcNode&?a) 要更合理。 那么調(diào)用時(shí)只要 *q = *p 就可以了。

查看完整回答
1 反對(duì) 回復(fù) 2017-06-11
?
mrs_empress

TA貢獻(xiàn)11條經(jīng)驗(yàn) 獲得超2個(gè)贊

懂了,不是賦值問(wèn)題,是指針沒(méi)搞好

查看完整回答
反對(duì) 回復(fù) 2017-06-11
  • 3 回答
  • 0 關(guān)注
  • 1964 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)